logging.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. # -*- coding: utf-8 -*-
  2. """统一日志配置。
  3. 替代原 interface/settings.py 中分散的 LOG_FORMAT/DATE_FORMAT/LOG_LEVEL/LOG_FILE。
  4. """
  5. from __future__ import absolute_import
  6. import logging
  7. from . import config
  8. __all__ = ["setup_logging", "get_logger"]
  9. def setup_logging():
  10. """根据 config/settings.yaml 初始化 logging.basicConfig。"""
  11. cfg = config.logging_settings()
  12. level_name = str(cfg.get("level", "INFO")).upper()
  13. level = getattr(logging, level_name, logging.INFO)
  14. log_format = cfg.get("format", "%(asctime)s - %(levelname)s - %(message)s")
  15. date_format = cfg.get("date_format", "%m/%d/%Y %H:%M:%S %p")
  16. log_file = cfg.get("file")
  17. kwargs = dict(level=level, format=log_format, datefmt=date_format)
  18. if log_file:
  19. # 确保日志目录存在
  20. import os
  21. log_dir = os.path.dirname(log_file)
  22. if log_dir and not os.path.exists(log_dir):
  23. os.makedirs(log_dir, exist_ok=True)
  24. kwargs["filename"] = log_file
  25. logging.basicConfig(**kwargs)
  26. def get_logger(name):
  27. """获取命名 logger。"""
  28. return logging.getLogger(name)