logging_config.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import logging
  2. import sys
  3. import os
  4. from pathlib import Path
  5. from config.settings import OUTPUT_DIR, WORK_DIR
  6. def _get_relative_path(pathname):
  7. """将绝对路径转换为相对于项目根目录的相对路径"""
  8. try:
  9. # 获取项目根目录
  10. project_root = WORK_DIR.parent
  11. # 转换为相对路径
  12. relative_path = os.path.relpath(pathname, start=project_root)
  13. return relative_path
  14. except ValueError:
  15. # 如果路径不在项目目录下,返回原路径
  16. return pathname
  17. class RelativePathFormatter(logging.Formatter):
  18. def format(self, record):
  19. # 转换路径为相对路径
  20. record.pathname = _get_relative_path(record.pathname)
  21. return super().format(record)
  22. def setup_logging():
  23. # Create logs directory
  24. logs_dir = Path(WORK_DIR / "temp/logs/aider_coder")
  25. # mkdir -p
  26. logs_dir.mkdir(parents=True, exist_ok=True)
  27. # Create formatter
  28. formatter = RelativePathFormatter(
  29. '%(asctime)s - %(pathname)s:%(lineno)d - %(levelname)s - %(message)s'
  30. )
  31. # Configure logging
  32. handler = logging.StreamHandler(sys.stdout)
  33. handler.setFormatter(formatter)
  34. file_handler = logging.FileHandler(logs_dir / "aider_coder.log")
  35. file_handler.setFormatter(formatter)
  36. # 获取根logger
  37. root_logger = logging.getLogger()
  38. root_logger.setLevel(logging.WARNING) # 设置根logger为WARNING级别
  39. # 创建项目特定的logger
  40. project_logger = logging.getLogger('excel_tool')
  41. project_logger.setLevel(logging.DEBUG)
  42. project_logger.propagate = False # 防止日志传播到根logger
  43. # 添加handler到项目logger
  44. project_logger.addHandler(handler)
  45. project_logger.addHandler(file_handler)
  46. # 设置其他库的日志级别为WARNING
  47. logging.getLogger('urllib3').setLevel(logging.WARNING)
  48. logging.getLogger('requests').setLevel(logging.WARNING)
  49. logging.getLogger('chardet').setLevel(logging.WARNING)