logger.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. """
  2. 日志配置 - 管理端专用
  3. """
  4. import sys
  5. from pathlib import Path
  6. from loguru import logger as loguru_logger
  7. from app.config import settings
  8. # 创建日志目录
  9. log_dir = Path("logs")
  10. log_dir.mkdir(exist_ok=True)
  11. # 移除默认处理器
  12. loguru_logger.remove()
  13. # 控制台输出
  14. loguru_logger.add(
  15. sys.stderr,
  16. 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>",
  17. level=settings.LOG_LEVEL,
  18. colorize=True,
  19. )
  20. # 默认文件输出
  21. loguru_logger.add(
  22. log_dir / "app_{time:YYYY-MM-DD}.log",
  23. rotation="00:00",
  24. retention="30 days",
  25. format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
  26. level="DEBUG",
  27. encoding="utf-8",
  28. )
  29. # Admin接口专用文件
  30. loguru_logger.add(
  31. log_dir / "admin_{time:YYYYMMDD}.log",
  32. rotation="00:00",
  33. retention="30 days",
  34. format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
  35. level="DEBUG",
  36. encoding="utf-8",
  37. filter=lambda record: record["extra"].get("admin_interface") is True
  38. )
  39. def setup_logger():
  40. """设置日志"""
  41. return loguru_logger
  42. def get_admin_logger():
  43. """获取admin接口专用logger"""
  44. return loguru_logger.bind(admin_interface=True)
  45. def get_logger_by_path(path: str):
  46. """
  47. 根据请求路径返回对应的logger
  48. 管理端所有接口使用admin logger
  49. """
  50. if path.startswith("/admin/"):
  51. return loguru_logger.bind(admin_interface=True)
  52. return loguru_logger
  53. logger = loguru_logger