logger.py 800 B

123456789101112131415161718192021222324252627282930313233
  1. """全局日志:统一格式与级别,供各模块 get_logger 使用。"""
  2. from __future__ import annotations
  3. import logging
  4. import sys
  5. from ..config import get_settings
  6. _configured = False
  7. def setup_logging() -> None:
  8. """按 Settings.log_level 初始化根日志(幂等)。"""
  9. global _configured
  10. if _configured:
  11. return
  12. level = getattr(logging, get_settings().log_level.upper(), logging.INFO)
  13. logging.basicConfig(
  14. level=level,
  15. format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
  16. datefmt="%Y-%m-%d %H:%M:%S",
  17. stream=sys.stdout,
  18. force=True,
  19. )
  20. _configured = True
  21. def get_logger(name: str = "app") -> logging.Logger:
  22. if not _configured:
  23. setup_logging()
  24. return logging.getLogger(name)