logger.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import logging.config
  2. import yaml
  3. import os
  4. from pathlib import Path
  5. import pathlib
  6. def setup_logging():
  7. """动态定位配置文件路径"""
  8. try:
  9. # 获取当前脚本所在目录(logger.py位置)
  10. script_dir = pathlib.Path(__file__).parent.resolve()
  11. # 构建配置文件的正确相对路径
  12. config_path = script_dir / "logging_config.yaml"
  13. print(f"配置文件路径: {config_path}")
  14. if not config_path.exists():
  15. raise FileNotFoundError(f"日志配置文件不存在: {config_path}")
  16. with open(config_path, 'rt', encoding='utf-8') as f:
  17. config = yaml.safe_load(f)
  18. logging.config.dictConfig(config)
  19. except Exception as e:
  20. logging.basicConfig(level=logging.INFO)
  21. logging.error("日志配置失败,使用基础配置: %s", e)
  22. print(f"⚠️ 关键错误: {str(e)}")
  23. def get_logger(name=None):
  24. """获取日志记录器"""
  25. return logging.getLogger(name or 'root')
  26. class ExceptionLogger:
  27. """异常记录工具"""
  28. @staticmethod
  29. def log_exception(logger, message):
  30. """记录异常及堆栈跟踪"""
  31. logger.exception(message, exc_info=True)