logger.py.backup 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. """
  2. 日志配置
  3. 支持admin和client接口日志分离
  4. """
  5. import sys
  6. from pathlib import Path
  7. from loguru import logger
  8. from app.config import settings
  9. # 创建日志目录
  10. log_dir = Path("logs")
  11. log_dir.mkdir(exist_ok=True)
  12. # 移除默认处理器
  13. logger.remove()
  14. # 控制台输出 - 优化API出入参显示
  15. 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. # 对于DEBUG级别,使用更清晰的格式显示API出入参
  20. colorize=True,
  21. )
  22. # Admin接口日志文件输出
  23. admin_logger = logger.bind(name="admin")
  24. admin_logger.remove() # 移除继承的处理器
  25. admin_logger.add(
  26. sys.stderr,
  27. 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>",
  28. level=settings.LOG_LEVEL,
  29. colorize=True,
  30. )
  31. admin_logger.add(
  32. log_dir / "admin_{time:YYYYMMDD}.log",
  33. rotation="00:00",
  34. retention="30 days",
  35. format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
  36. level="DEBUG",
  37. encoding="utf-8",
  38. )
  39. # Client接口日志文件输出
  40. client_logger = logger.bind(name="client")
  41. client_logger.remove() # 移除继承的处理器
  42. client_logger.add(
  43. sys.stderr,
  44. 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>",
  45. level=settings.LOG_LEVEL,
  46. colorize=True,
  47. )
  48. client_logger.add(
  49. log_dir / "client_{time:YYYYMMDD}.log",
  50. rotation="00:00",
  51. retention="30 days",
  52. format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
  53. level="DEBUG",
  54. encoding="utf-8",
  55. )
  56. def setup_logger():
  57. """设置日志"""
  58. return logger
  59. def get_admin_logger():
  60. """获取admin接口专用logger"""
  61. return admin_logger
  62. def get_client_logger():
  63. """获取client接口专用logger"""
  64. return client_logger
  65. def get_logger_by_path(path: str):
  66. """
  67. 根据请求路径返回对应的logger
  68. /admin/* -> admin_logger
  69. /api/* -> client_logger
  70. 其他 -> 默认logger
  71. """
  72. if path.startswith("/admin/"):
  73. return admin_logger
  74. elif path.startswith("/api/"):
  75. return client_logger
  76. else:
  77. return logger