Xiang Li

35 papers C 1Misc 1Journal 5Unranked 28
YearRankTypeTitle / Venue / Authors
2025 conf
OFC
Pengpeng Wei, Xuemeng Hu, Zepeng Gong, Xu Zhang, Qingyu He, Ming Luo, Tianye Huang, Xiang Li, Xiaobin Hong, Yan Li, Jian Wu
2024 conf
OFC
Jie Li, Ming Luo, Xiang Li, Qinyu He, Yuhan Gong, Xu Zhang, Zepeng Gong, Xi Xiao
2024 conf
OFC
Zepeng Gong, Fan Shi, Ming Luo, Xu Zhang, Yuhan Gong, Xiang Li, Tianye Huang, Xi Xiao
2022 J jnl
Image Vis. Comput.
Zhihua Du, Yong Zuo, Jifang Qiu, Xiang Li, Yan Li, Hongxiang Guo, Xiaobin Hong, Jian Wu
2020 J jnl
JOCN
Ming Luo, DanYu Wu, Weizhong Li, Tao Zeng, Lei Zhou, Lingheng Meng, Xiang Li, Shaohua Yu
2020 conf
OFC
Haibo Li, Ming Luo, Xiang Li, Shaohua Yu
2020 conf
OFC
Wu Liu, Xiang Li, Chao Yang, Ming Luo
2020 conf
OFC
Chao Yang, Xiang Li, Ming Luo, Zhixue He, Haibo Li, Cai Li, Shaohua Yu
2020 conf
OFC
Yuyang Liu, Yan Li, Jingwei Song, Honghang Zhou, Lei Yue, Xiang Li, Ming Luo, Jian Wu
2019 conf
OFC
Ming Luo, DanYu Wu, Weizhong Li, Tao Zeng, Lei Zhou, Lingheng Meng, Zhixue He, Cai Li, Xiang Li
2019 conf
OFC
Cai Li, Chao Yang, Ming Luo, Zhixue He, Xiang Li, Shaohua Yu
2019 conf
OFC
Xiaoxiao Dai, Ming Luo, Xiang Li
2019 conf
OFC
Zexin Chen, Chenhui Xie, Songnian Fu, Xiang Li, Daojun Xue, Zhixue He, Mengli Tang, Deming Liu
2019 conf
OECC/PSC
Jie Pang, Sheneheng Ni, Feng Wang, Shuying Han, Shanhong You, Xiang Li, Ming Luo, Zichen Liu
2019 J jnl
JOCN
Ming Luo, Jie Li, Tao Zeng, Lingheng Meng, Lei Xue, Lilin Yi, Xiang Li
2018 conf
OFC
Mingyue Zhu, Jing Zhang, Hao Ying, Xiang Li, Ming Luo, Xiatao Huang, Yingxiong Song, Fan Li, Xingwen Yi, Kun Qiu
2018 conf
OFC
Zhixue He, Wu Liu, Chenhui Xie, Songnian Fu, Xiang Li, Chao Yang, Qi Yang
2018 conf
ECOC
Xiang Li, Ming Luo, Tao Zeng, Lilin Yi, Jie Li, Lingheng Meng, Shaohua Yu
2018 conf
OFC
Ming Luo, Tao Zeng, Lilin Yi, Jie Li, Xiang Li, Qi Yang, Lei Xue
2018 conf
ECOC
Haibo Li, Xiang Li, Ming Luo, Shaohua Yu
2018 Misc conf
PSC
Xiong Gao, Cen Wang, Shenzhen Yang, Hongxiang Guo, Xiang Li, Jian Wu
2018 J jnl
IEEE Access
Yinan Tang, Hongxiang Guo, Tongtong Yuan, Qi Wu, Xiang Li, Cen Wang, Xiong Gao, Jian Wu
2018 conf
ECOC
Tao Zeng, Lingheng Meng, Jie Li, Ming Luo, Xiang Li, Liyan Huang
2018 conf
OFC
Ming Luo, Fan Gao, Xiang Li, Zhixue He, Songnian Fu
2017 conf
OFC
Xiang Li, Shiwei Zhou, Fan Gao, Ming Luo, Qi Yang, Qi Mo, Yu Yu, Songnian Fu
2017 conf
OFC
Haibo Li, Qi Yang, Ming Luo, Rong Hu, Peng Jiang, Yongpiao Liu, Xiang Li, Shaohua Yu
2017 J jnl
CoRR
Qiong Wu, Zhenhua Feng, Ming Tang, Xiang Li, Ming Luo, Huibin Zhou, Songnian Fu, Deming Liu
2017 conf
ICAIT
Ying Shen, Wei Liu, Shanhong You, Zhen Wang, Ying Wang, Xiang Li, Ming Luo
2017 conf
OFC
Ying Qiu, Xiang Li, Ming Luo, Jing Xu, Qi Yang, Shaohua Yu, Shanhong You
2017 conf
ECOC
Ying Qiu, Ming Luo, Xiang Li, Zhixue He, Qi Yang
2016 C conf
ICCC
Ying Qiu, Ming Luo, Shaohua Yu, Xiang Li, Rong Hu, Cai Li, Qi Yang
2016 conf
CSNDSP
Shanhong You, Ying Wang, Zhen Wang, Mengchi Chen, Xiang Li, Ming Luo, Ying Qiu, Rong Hu, Qi Yang, Jian Chen
2016 conf
OFC
Xiang Li, Shiwei Zhou, Honglin Ji, Ming Luo, Qi Yang, Lilin Yi, Rong Hu, Cai Li, Songnian Fu, Arokiaswami Alphones, Wen-De Zhong, Changyuan Yu
2015 conf
ECOC
Xiang Li, Wen-De Zhong, Arokiaswami Alphones, Changyuan Yu, Ming Luo, Rong Hu, Qi Yang
2014 conf
OFC
Xiang Li, Wen-De Zhong, Arokiaswami Alphones, Changyuan Yu
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