logger.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """
  2. 日志配置
  3. 支持admin和client接口日志分离
  4. """
  5. import sys
  6. from pathlib import Path
  7. from loguru import logger as loguru_logger
  8. from app.config import settings
  9. # 创建日志目录
  10. log_dir = Path("logs")
  11. log_dir.mkdir(exist_ok=True)
  12. # 移除默认处理器
  13. loguru_logger.remove()
  14. # 仅控制台输出(不再写入 app_ / admin_ / client_ 文件)
  15. loguru_logger.add(
  16. sys.stderr,
  17. 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>",
  18. level=settings.LOG_LEVEL,
  19. colorize=True,
  20. )
  21. def setup_logger():
  22. """设置日志"""
  23. return loguru_logger
  24. def get_admin_logger():
  25. """获取admin接口专用logger"""
  26. return loguru_logger.bind(admin_interface=True)
  27. def get_client_logger():
  28. """获取client接口专用logger"""
  29. return loguru_logger.bind(client_interface=True)
  30. def get_logger_by_path(path: str):
  31. """
  32. 根据请求路径返回对应的logger
  33. /admin/* -> admin_logger
  34. /api/* -> client_logger
  35. 其他 -> 默认logger
  36. """
  37. if path.startswith("/admin/"):
  38. return loguru_logger.bind(admin_interface=True)
  39. elif path.startswith("/api/"):
  40. return loguru_logger.bind(client_interface=True)
  41. else:
  42. return loguru_logger
  43. # 向后兼容:保留logger名称供现有代码使用
  44. logger = loguru_logger