49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
|
|
"""
|
|||
|
|
统一的日志模块 - 基于环境变量控制日志级别
|
|||
|
|
类似 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)
|