Xiao-Peng Yu

18 papers Journal 16Unranked 2
YearRankTypeTitle / Venue / Authors
2026 conf
ISSCC
Zhong Tang, Sining Pan, Xiao-Peng Yu, Nianxiong Nick Tan, Zhangming Zhu
2026 J jnl
Microelectron. J.
Kunpeng Xu, Lingzhi Xu, Bingsheng Huang, Yong Li, Hongguang Dai, Wenhan Zhang, Xiao-Peng Yu
2025 J jnl
IEEE J. Solid State Circuits
Zhong Tang, Xiao-Peng Yu, Kofi A. A. Makinwa, Nianxiong Nick Tan
2025 J jnl
Int. J. Circuit Theory Appl.
Kewei Hu, Zhong Tang, Zhenghao Lu, Nianxiong Nick Tan, Xiao-Peng Yu
2025 J jnl
IEEE J. Solid State Circuits
Xinjie Wu, Xiao-Peng Yu, Nianxiong Nick Tan, Zhong Tang
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Siqi Wang, Lei Xie, Jiabin Zhang, Zhenghao Lu, Xiao-Peng Yu
2024 J jnl
IEEE J. Solid State Circuits
Zhong Tang, Yuyan Liu, Pengpeng Chen, Haining Wang, Xiao-Peng Yu, Kofi A. A. Makinwa, Nianxiong Nick Tan
2024 J jnl
Microelectron. J.
Kewei Hu, Zhong Tang, Nianxiong Nick Tan, Xiao-Peng Yu
2023 J jnl
J. Circuits Syst. Comput.
Zhenyan Huang, Kewei Hu, Yi Ding, Nianxiong Nick Tan, Hanming Wu, Xiao-Peng Yu
2023 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Liying Cai, Xiong Song, Zhenghao Lu, Xiao-Peng Yu, Kiat Seng Yeo, Jer-Ming Chen, Bharatha Kumar Thangarasu
2021 conf
CICC
Zhong Tang, Yun Fang, Xiao-Peng Yu, Nianxiong Nick Tan, Zheng Shi, Pieter Harpe
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zhenyan Huang, Zhong Tang, Xiao-Peng Yu, Zheng Shi, Ling Lin, Nianxiong Nick Tan
2021 J jnl
Microelectron. J.
Haowei Lu, Xiao-Peng Yu, Siqi Wang, Yu-Yan Liu, Zhenyan Huang, Zhenghao Lu, Kiat Seng Yeo, Jer-Ming Chen
2021 J jnl
Microelectron. J.
Yun Fang, Zhong Tang, Xiao-Peng Yu, Zhiwei Xu, Hao Gao
2020 J jnl
IEEE J. Solid State Circuits
Zhong Tang, Yun Fang, Zheng Shi, Xiao-Peng Yu, Nianxiong Tan, Weiwei Pan
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zhong Tang, Yun Fang, Xiao-Peng Yu, Zheng Shi, Ling Lin, Nianxiong Nick Tan
2020 J jnl
Microelectron. J.
Haowei Lu, Xiao-Peng Yu, Zhenghao Lu, Kiat Seng Yeo, Jer-Ming Chen
2019 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Yun Fang, Zhong Tang, Xiao-Peng Yu, Zheng Shi, Kiat Seng Yeo
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