Ran Zhang

37 papers Journal 37
YearRankTypeTitle / Venue / Authors
2026 J jnl
Numer. Algorithms
Xiuli Wang, Ran Zhang, Shangyou Zhang
2026 J jnl
J. Sci. Comput.
Minxing Zhang, Yongkui Zou, Ran Zhang, Yanzhao Cao
2025 J jnl
J. Sci. Comput.
Mingze Qin, Qilong Zhai, Ran Zhang
2025 J jnl
J. Sci. Comput.
Xuefeng Liu, Ran Zhang, Shangyou Zhang, Zhimin Zhang
2025 J jnl
J. Sci. Comput.
Xuan Liu, Yongkui Zou, Ran Zhang, Yanzhao Cao, Amnon J. Meir
2025 J jnl
CoRR
Xuan Liu, Yongkui Zou, Ran Zhang, Yanzhao Cao, Amnon J. Meir
2025 J jnl
CoRR
Minxing Zhang, Yongkui Zou, Ran Zhang, Yanzhao Cao
2024 J jnl
CoRR
Ran Zhang, Shangyou Zhang
2023 J jnl
CoRR
Fuchang Huo, Ruishu Wang, Yanqiu Wang, Ran Zhang
2023 J jnl
Comput. Methods Appl. Math.
Jiachuan Zhang, Ran Zhang, Jingzhi Li
2022 J jnl
CoRR
Jiachuan Zhang, Ran Zhang, Xiaoshen Wang
2022 J jnl
J. Sci. Comput.
Jiachuan Zhang, Ran Zhang, Xiaoshen Wang
2022 J jnl
J. Sci. Comput.
Fengshan Zhang, Yongkui Zou, Shimin Chai, Ran Zhang, Yanzhao Cao
2022 J jnl
CoRR
Lin Yang, Hui Peng, Qilong Zhai, Ran Zhang
2021 J jnl
J. Comput. Phys.
Yujie Liu, Yue Feng, Ran Zhang
2021 J jnl
CoRR
Hui Peng, Qilong Zhai, Ran Zhang, Shangyou Zhang
2020 J jnl
SIAM J. Numer. Anal.
Carsten Carstensen, Qilong Zhai, Ran Zhang
2020 J jnl
Comput. Math. Appl.
Graham Harper, Ruishu Wang, Jiangguo Liu, Simon Tavener, Ran Zhang
2020 J jnl
J. Comput. Appl. Math.
Qilong Zhai, Tian Tian, Ran Zhang, Shangyou Zhang
2020 J jnl
Comput. Appl. Math.
Jian Tian, Hehu Xie, Kai Yang, Ran Zhang
2019 J jnl
CoRR
Yujie Liu, Yue Feng, Ran Zhang
2019 J jnl
Math. Comput.
Junping Wang, Qilong Zhai, Ran Zhang, Shangyou Zhang
2019 J jnl
J. Sci. Comput.
Qilong Zhai, Hehu Xie, Ran Zhang, Zhimin Zhang
2019 J jnl
J. Comput. Appl. Math.
Ruishu Wang, Ran Zhang, Xiuli Wang, Jiwei Jia
2018 J jnl
J. Sci. Comput.
Junping Wang, Ruishu Wang, Qilong Zhai, Ran Zhang
2018 J jnl
J. Comput. Appl. Math.
Tian Tian, Qilong Zhai, Ran Zhang
2018 J jnl
J. Comput. Phys.
Junping Wang, Xiu Ye, Qilong Zhai, Ran Zhang
2017 J jnl
Comput. Math. Appl.
Qilong Zhai, Xiu Ye, Ruishu Wang, Ran Zhang
2016 J jnl
J. Comput. Appl. Math.
Chunmei Wang, Junping Wang, Ruishu Wang, Ran Zhang
2016 J jnl
J. Comput. Appl. Math.
Ruishu Wang, Xiaoshen Wang, Qilong Zhai, Ran Zhang
2016 J jnl
J. Comput. Appl. Math.
Xiuli Wang, Qilong Zhai, Ran Zhang
2015 J jnl
J. Sci. Comput.
Ran Zhang, Qilong Zhai
2015 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Haiming Song, Qi Zhang, Ran Zhang
2015 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Ran Zhang, Qi Zhang, Haiming Song
2012 J jnl
SIAM J. Numer. Anal.
Junping Wang, Ran Zhang
2011 J jnl
J. Comput. Appl. Math.
Kai Yang, Ran Zhang
2011 J jnl
SIAM J. Sci. Comput.
Hehu Xie, Ran Zhang, Hermann Brunner
redb/logging_utils.py
← Index redb/logging_utils.py python
"""
Logging utilities and shared enums for REDB.

Contains the ImportResult enum, log formatters, and logger setup functions
used across the ingestor pipeline.
"""
import logging
from logging.handlers import QueueHandler
import os
from enum import Enum


class ImportResult(Enum):
    CORRECTLY = 0
    PARTIALLY = 1
    FAILED = 2
    PENDING = 3
    SKIPPED = 4


class FileNameFormatter(logging.Formatter):
    def format(self, record):
        record.filenameinfo = getattr(record, "filenameinfo", "unknown")
        return super().format(record)


def setup_logger(log_queue, filename):
    logger = logging.getLogger(filename)
    if not logger.handlers:
        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)
        handler = QueueHandler(log_queue)
        logger.addHandler(handler)
        logger.propagate = False  # Prevent propagation to parent loggers
    return logger


def logger_thread(log_queue, log_file):
    handler = logging.FileHandler(log_file)
    formatter = FileNameFormatter(
        "%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s"
    )
    handler.setFormatter(formatter)

    while True:
        try:
            record = log_queue.get()
            if record is None:
                break
            # Format and write the log record
            message = formatter.format(record)
            handler.stream.write(message + "\n")
            handler.stream.flush()
        except Exception:
            import traceback
            import sys

            print("[ERR] Error in logger thread:", file=sys.stderr)
            traceback.print_exc(file=sys.stderr)


def setup_direct_logger(log_file, filename, pid=None):
    """Setup a logger that writes directly to the log file without using a queue."""
    # Create a unique logger name using the process ID
    logger_name = f"{filename}_{pid}" if pid else filename
    logger = logging.getLogger(logger_name)

    if not logger.handlers:
        handler = logging.FileHandler(log_file)
        formatter = logging.Formatter("%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s")
        handler.setFormatter(formatter)
        logger.addHandler(handler)

        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)

    # Add filename info to the logger's extra info
    extra = {"filenameinfo": filename}
    logger = logging.LoggerAdapter(logger, extra)

    return logger