WeiFang Sun

21 papers Journal 21
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eng. Appl. Artif. Intell.
Zhenlong Chen, Xiao Zhuang, Di Zhou, WeiFang Sun, Jing Cai, Jiawei Xiang
2026 J jnl
Robotics Comput. Integr. Manuf.
Shengjie Jiang, Qijia Qian, Jianhong Liu, Pan Wang, Xiao Zhuang, Di Zhou, WeiFang Sun, Jiawei Xiang
2026 J jnl
Reliab. Eng. Syst. Saf.
Xiao Zhuang, Jing Cai, Di Zhou, WeiFang Sun, Jiawei Xiang
2026 J jnl
CoRR
ChunTeng Chen, YiChen Hsu, Yiwen Liu, WeiFang Sun, TsaiChing Ni, ChunYi Lee, Min Sun, YuanFu Yang
2025 J jnl
Eng. Appl. Artif. Intell.
Xiao Zhuang, Jian Ge, Xiaolong Mao, Di Zhou, Hongbing Yao, WeiFang Sun, Lin Li, Jiawei Xiang
2025 J jnl
IEEE Trans. Instrum. Meas.
Xiao Zhuang, WeiFang Sun, Xiaolei Yu, Jiawei Xiang, Di Zhou
2025 J jnl
Reliab. Eng. Syst. Saf.
Zhendong Hei, WeiFang Sun, Haiyang Yang, Meipeng Zhong, Yanling Li, Anil Kumar, Jiawei Xiang, Yuqing Zhou
2024 J jnl
Adv. Eng. Informatics
Jianchun Guo, Yi Liu, Ronggang Yang, WeiFang Sun, Jiawei Xiang
2024 J jnl
IEEE Trans. Instrum. Meas.
Jian Ge, Di Zhou, Xiao Zhuang, Xiaomin Wang, WeiFang Sun, Hongbing Yao, Jiawei Xiang
2024 J jnl
Expert Syst. Appl.
Jianchun Guo, Yi Liu, Ronggang Yang, WeiFang Sun, Jiawei Xiang
2024 J jnl
Briefings Bioinform.
Meihui Tian, WeiFang Sun, Yinhui Mao, Yanan Zhang, Huan Liu, Yong Tang
2023 J jnl
IEEE Trans. Instrum. Meas.
Yizhu Shi, Yuqing Zhou, Yan Ren, WeiFang Sun, Jiawei Xiang
2023 J jnl
IEEE Trans. Instrum. Meas.
Yuqing Zhou, Hongche Wang, Gonghai Wang, Anil Kumar, WeiFang Sun, Jiawei Xiang
2022 J jnl
IEEE Trans. Instrum. Meas.
Jinchuan Shi, Yan Ren, Jiyan Yi, WeiFang Sun, Hesheng Tang, Jiawei Xiang
2022 J jnl
J. Intell. Manuf.
Yuqing Zhou, Bintao Sun, WeiFang Sun, Zhi Lei
2021 J jnl
IEEE Trans. Instrum. Meas.
WeiFang Sun, Yuqing Zhou, Jiawei Xiang, Binqiang Chen, Wei Feng
2021 J jnl
IEEE Trans. Instrum. Meas.
Qinsong Zhu, Bintao Sun, Yuqing Zhou, WeiFang Sun, Jiawei Xiang
2020 J jnl
IEEE Access
Yuqing Zhou, WeiFang Sun
2019 J jnl
IEEE Access
WeiFang Sun, Nianyin Zeng, Yuchao He
2019 J jnl
IEEE Access
Binqiang Chen, Yang Li, Xincheng Cao, WeiFang Sun, Wangpeng He
2018 J jnl
Int. J. Distributed Sens. Networks
Bin Yao, WeiFang Sun, Binqiang Chen, Tianxiang Zhou, Xincheng Cao
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