from loguru import logger from pathlib import Path from config.setting import settings # 日志目录 LOG_DIR = Path(__file__).parent.parent.parent / "logs" LOG_DIR.mkdir(exist_ok=True) # 日志级别 LOG_LEVEL = settings.LOG_LEVEL.upper() # 日志格式 STDOUT_FORMAT = ( "{time:YYYY-MM-DD HH:mm:ss.SSS} | " "{level: <8} | " "{name}:{function}:{line} - " "{message}" ) FILE_FORMAT = ( "{time:YYYY-MM-DD HH:mm:ss.SSS} | " "{level: <8} | " "{name}:{function}:{line} - {message}" ) # 移除默认处理器 logger.remove() # 添加控制台处理器 logger.add( sink="sys.stdout", level=LOG_LEVEL, format=STDOUT_FORMAT, colorize=True, backtrace=True, # 显示完整异常堆栈 diagnose=True, # 显示详细异常信息 ) # 添加文件处理器 - 常规日志 logger.add( sink=LOG_DIR / "app.log", level="INFO", format=FILE_FORMAT, rotation="10 MB", # 日志文件大小达到10MB时自动分割 retention="7 days", # 保留7天的日志 compression="zip", # 归档时压缩为zip enqueue=True, # 异步写入 serialize=False, # 不使用JSON格式 ) # 添加文件处理器 - 错误日志 logger.add( sink=LOG_DIR / "error.log", level="ERROR", format=FILE_FORMAT, rotation="10 MB", retention="30 days", compression="zip", enqueue=True, serialize=False, ) # 导出配置好的logger __all__ = ["logger"]