#日志文件
import logging
import sys

def setup_logger():
    """
    配置一个全局日志记录器，支持输出到控制台和文件。
    """
    # 创建一个日志记录器

    # 配置日志
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger(__name__)

    logger = logging.getLogger("ViolationDetectorLogger")
    logger.setLevel(logging.DEBUG)  # 设置最低级别为DEBUG

    # 如果已经有处理器了，就不要重复添加，防止日志重复打印
    if logger.hasHandlers():
        return logger

    # --- 控制台处理器 ---
    console_handler = logging.StreamHandler(sys.stdout)
    # 对于控制台，我们只显示INFO及以上级别的信息
    console_handler.setLevel(logging.INFO)
    console_formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - [%(module)s:%(lineno)d] - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    console_handler.setFormatter(console_formatter)

    # --- 文件处理器 ---
    file_handler = logging.FileHandler("violation_detector.log", mode='a', encoding='utf-8')
    # 对于文件，我们记录所有DEBUG及以上级别的信息
    file_handler.setLevel(logging.DEBUG)
    file_formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    file_handler.setFormatter(file_formatter)

    # 将处理器添加到日志记录器
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

    return logger

# 创建并导出logger实例
logger = setup_logger()
