""" 统一的日志模块 - 基于环境变量控制日志级别 类似 C# 的条件编译效果,开发时打印详细调试信息,生产环境只输出关键信息 """ import os from .config import LOG_LEVEL, DEBUG import logging from typing import Any # 根据环境变量控制是否显示详细调试信息 DEBUG_MODE = DEBUG # 创建统一的日志器 logger = logging.getLogger("ai_agent") logger.setLevel(getattr(logging, LOG_LEVEL, logging.INFO)) # 避免重复添加 handler if not logger.handlers: handler = logging.StreamHandler() # 重要:handler 也需要设置级别,否则可能继承根 logger 的级别 handler.setLevel(getattr(logging, LOG_LEVEL, logging.INFO)) formatter = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) handler.setFormatter(formatter) logger.addHandler(handler) def debug(msg: Any, *args, **kwargs): """调试日志,仅在 DEBUG 环境变量为 true 时打印""" if DEBUG_MODE: logger.debug(msg, *args, **kwargs) def info(msg: Any, *args, **kwargs): """信息日志""" logger.info(msg, *args, **kwargs) def warning(msg: Any, *args, **kwargs): """警告日志""" logger.warning(msg, *args, **kwargs) def error(msg: Any, *args, **kwargs): """错误日志""" logger.error(msg, *args, **kwargs)