logging.py 859 B

1234567891011121314151617181920212223242526272829303132
  1. """日志配置 —— 统一日志格式、级别与输出目标."""
  2. from __future__ import annotations
  3. import logging
  4. import sys
  5. def _normalize_level(level: str | int | None) -> int:
  6. if level is None:
  7. return logging.INFO
  8. if isinstance(level, int):
  9. return level
  10. s = str(level).strip().upper()
  11. return getattr(logging, s, logging.INFO)
  12. def configure_logging(level: str | int | None = None) -> None:
  13. lvl = _normalize_level(level)
  14. app_root = logging.getLogger("app")
  15. app_root.setLevel(lvl)
  16. if not app_root.handlers:
  17. h = logging.StreamHandler(sys.stderr)
  18. h.setLevel(lvl)
  19. h.setFormatter(
  20. logging.Formatter("%(levelname)s: %(name)s: %(message)s")
  21. )
  22. app_root.addHandler(h)
  23. app_root.propagate = False
  24. logging.getLogger(__name__).setLevel(lvl)