| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """
- 日志配置
- 支持admin和client接口日志分离
- """
- import sys
- from pathlib import Path
- from loguru import logger as loguru_logger
- from app.config import settings
- # 创建日志目录
- log_dir = Path("logs")
- log_dir.mkdir(exist_ok=True)
- # 移除默认处理器
- loguru_logger.remove()
- # 仅控制台输出(不再写入 app_ / admin_ / client_ 文件)
- loguru_logger.add(
- sys.stderr,
- format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
- level=settings.LOG_LEVEL,
- colorize=True,
- )
- def setup_logger():
- """设置日志"""
- return loguru_logger
- def get_admin_logger():
- """获取admin接口专用logger"""
- return loguru_logger.bind(admin_interface=True)
- def get_client_logger():
- """获取client接口专用logger"""
- return loguru_logger.bind(client_interface=True)
- def get_logger_by_path(path: str):
- """
- 根据请求路径返回对应的logger
- /admin/* -> admin_logger
- /api/* -> client_logger
- 其他 -> 默认logger
- """
- if path.startswith("/admin/"):
- return loguru_logger.bind(admin_interface=True)
- elif path.startswith("/api/"):
- return loguru_logger.bind(client_interface=True)
- else:
- return loguru_logger
- # 向后兼容:保留logger名称供现有代码使用
- logger = loguru_logger
|