Xiaochuan Wu

27 papers B 2C 1Journal 18Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Signal Process. Lett.
Bowen Zhang, Xiaochuan Wu, Yu Song, Di Yao, Xin Zhang
2024 J jnl
Comput. Biol. Medicine
Fangyi Yu, Xiaochuan Wu, Weisong Chen, Fugui Yan, Wen Li
2024 J jnl
Remote. Sens.
Siming Chen, Xiaochuan Wu, Shujie Li, Weibo Deng, Xin Zhang
2024 J jnl
Remote. Sens.
Shujie Li, Xiaochuan Wu, Siming Chen, Weibo Deng, Xin Zhang
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xiaowei Ji, Xiaochuan Wu, Dezhu Xiao, Qiang Yang
2023 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yanmo Hu, Weibo Deng, Yingning Dong, Xiaochuan Wu
2022 conf
FMEC
Xin Pei, Wenpeng Song, Juntao Cao, Songsong Zheng, Xiaochuan Wu
2022 J jnl
Remote. Sens.
Xiaowei Ji, Jiaming Li, Qiang Yang, Linwei Wang, Ying Suo, Xiaochuan Wu
2022 J jnl
Digit. Signal Process.
Hongyong Wang, Weibo Deng, Ying Suo, Xin Zhang, Xiaochuan Wu, Yang Bai
2021 J jnl
Entropy
Huangjing Ni, Zijie Song, Lei Liang, Qiaowen Xing, Jiaolong Qin, Xiaochuan Wu
2021 J jnl
IEEE Signal Process. Lett.
Yanmo Hu, Weibo Deng, Xin Zhang, Xiaochuan Wu
2021 J jnl
Symmetry
Xiaochuan Wu, Qianru Yang, Jin Li, Fengzhen Hou
2020 conf
CCWC
Xin Pei, Xiaochuan Wu, Liang Sun
2020 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Di Yao, Xin Zhang, Bin Hu, Xiaochuan Wu
2020 J jnl
Sensors
Di Yao, Xin Zhang, Bin Hu, Qiang Yang, Xiaochuan Wu
2020 conf
CCWC
Xin Pei, Xuefeng Li, Xiaochuan Wu, Liang Sun, Yixin Cao
2019 conf
ICBCT
Yixin Cao, Zhaoye Xu, Xiaochuan Wu
2019 conf
CCWC
Xin Pei, Xuefeng Li, Xiaochuan Wu, Kaiyan Zheng, Boheng Zhu, Yixin Cao
2019 J jnl
Sensors
Xiaochuan Wu, Yi Lu, Xuechao Duan, Dan Zhang, Wenyao Deng
2019 J jnl
IEEE Access
Zourong Long, Peng Feng, Peng He, Xiaochuan Wu, Xiaodong Guo, Xuezhi Ren, Mianyi Chen, Jingxuan Gao, Biao Wei, Wenxiang Cong
2018 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Bin Hu, Xiaochuan Wu, Xin Zhang, Qiang Yang, Di Yao, Weibo Deng
2018 J jnl
IEEE Access
Bin Hu, Xiaochuan Wu, Xin Zhang, Qiang Yang, Weibo Deng
2018 B conf
NSS
Xianping Mao, Xuefeng Li, Xiaochuan Wu, Chuansheng Wang, Junzuo Lai
2017 conf
ICCIP
Xianping Mao, Jing Zhao, Xuefeng Li, Huanyu Ma, Xiaochuan Wu, Qiushan Liu
2016 J jnl
Int. J. Comput. Sci. Eng.
Tzai-Der Wang, Xiaochuan Wu, Colin Fyfe
2012 B conf
IEEE Congress on Evolutionary Computation
Tzai-Der Wang, Xiaochuan Wu, Colin Fyfe
2011 C conf
CIS
Tzai-Der Wang, Xiaochuan Wu, Colin Fyfe
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