""" 日志配置 支持admin和client接口日志分离 """ import sys from pathlib import Path from loguru import logger from app.config import settings # 创建日志目录 log_dir = Path("logs") log_dir.mkdir(exist_ok=True) # 移除默认处理器 logger.remove() # 控制台输出 - 优化API出入参显示 logger.add( sys.stderr, format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level=settings.LOG_LEVEL, # 对于DEBUG级别,使用更清晰的格式显示API出入参 colorize=True, ) # Admin接口日志文件输出 admin_logger = logger.bind(name="admin") admin_logger.remove() # 移除继承的处理器 admin_logger.add( sys.stderr, format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level=settings.LOG_LEVEL, colorize=True, ) admin_logger.add( log_dir / "admin_{time:YYYYMMDD}.log", rotation="00:00", retention="30 days", format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level="DEBUG", encoding="utf-8", ) # Client接口日志文件输出 client_logger = logger.bind(name="client") client_logger.remove() # 移除继承的处理器 client_logger.add( sys.stderr, format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level=settings.LOG_LEVEL, colorize=True, ) client_logger.add( log_dir / "client_{time:YYYYMMDD}.log", rotation="00:00", retention="30 days", format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level="DEBUG", encoding="utf-8", ) def setup_logger(): """设置日志""" return logger def get_admin_logger(): """获取admin接口专用logger""" return admin_logger def get_client_logger(): """获取client接口专用logger""" return client_logger def get_logger_by_path(path: str): """ 根据请求路径返回对应的logger /admin/* -> admin_logger /api/* -> client_logger 其他 -> 默认logger """ if path.startswith("/admin/"): return admin_logger elif path.startswith("/api/"): return client_logger else: return logger