Haiyun Liu

23 papers Journal 18Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans. Instrum. Meas.
Lin Jiao, Haiyun Liu, Zheng Liang, Peng Chen, Rujing Wang, Kang Liu
2025 J jnl
CoRR
Chengye Li, Haiyun Liu, Yuanxi Li
2025 J jnl
Comput. Electron. Agric.
Hongbo Chen, Tianjiao Chen, Haiyun Liu, Jianming Du, Rujing Wang, Wei Dong
2024 J jnl
Remote. Sens.
Shufang Xu, Ziyun Zhou, Haiyun Liu, Xuejie Zhang, Jianni Li, Hongmin Gao
2024 J jnl
Comput. Electron. Agric.
Haiyun Liu, Hongbo Chen, Jianming Du, Chengjun Xie, Qiong Zhou, Rujing Wang, Lin Jiao
2024 J jnl
Comput. Electron. Agric.
Qiong Zhou, Ziliang Huang, Liu Liu, Fenmei Wang, Yue Teng, Haiyun Liu, Youhua Zhang, Rujing Wang
2024 J jnl
Pattern Recognit.
Qiupu Chen, Lin Jiao, Fenmei Wang, Jianming Du, Haiyun Liu, Xue Wang, Rujing Wang
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Hongmin Gao, Runhua Sheng, Zhonghao Chen, Haiyun Liu, Shufang Xu, Bing Zhang
2024 J jnl
Adv. Math. Commun.
Qin Shu, Haiyun Liu, Xing Liu, Yunxiu Yang, Wendong Chen
2024 J jnl
CoRR
Xinxu Wei, Xi Lin, Haiyun Liu, Shixuan Zhao, Yongjie Li
2023 conf
ASICON
Zhaoyu Ai, Haiyun Liu, Xinyang Chen, Jing Feng, Yuxi Zhou, Moufu Kong
2023 J jnl
IEEE Trans. Medical Imaging
Dehui Xiang, Shenshen Yan, Ying Guan, Mulin Cai, Zheqing Li, Haiyun Liu, Xinjian Chen, Bei Tian
2020 J jnl
J. Electronic Imaging
Hongmin Gao, Dan Yao, Yao Yang, Chenming Li, Haiyun Liu, Zaijun Hua
2020 J jnl
Neurocomputing
Deqiong Ding, Xiaogao Yang, Fei Xia, Tiefeng Ma, Haiyun Liu, Chang Tang
2019 J jnl
Sensors
Hongmin Gao, Dan Yao, Mingxia Wang, Chenming Li, Haiyun Liu, Zaijun Hua, Jiawei Wang
2019 J jnl
Sensors
Haiyun Liu, Xu Ma, Ming Tao, Ruoling Deng, Kemoh Bangura, Xiangwu Deng, Chuang Liu, Long Qi
2019 J jnl
J. Medical Imaging Health Informatics
Zhibo Wang, Jianjie Wei, Haiyun Liu, Yuanlin Gu
2019 J jnl
Sensors
Zhen Zhang, Yang Zhou, Haiyun Liu, Lili Zhang, Huibin Wang
2017 conf
ISCID (2)
Haiyun Liu, Hang Yin, Hanyu Xie
2017 conf
ICBK
Yusheng Hu, Kehui Liu, Dong Xu, Zhengang Zhai, Haiyun Liu
2016 J jnl
Comput. Medical Imaging Graph.
Haiyun Liu, Xinde Chen, Zhijian He, Jun Li
2007 conf
I3E (1)
Liang Peng, Haiyun Liu
2007 conf
ROBIO
Liang Peng, Haiyun Liu
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