| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import logging
- import sys
- import os
- from pathlib import Path
- WORK_DIR = Path(__file__).resolve().parent
- def _get_relative_path(pathname):
- """将绝对路径转换为相对于项目根目录的相对路径"""
- try:
- # 获取项目根目录
- project_root = WORK_DIR.parent
- # 转换为相对路径
- relative_path = os.path.relpath(pathname, start=project_root)
- return relative_path
- except ValueError:
- # 如果路径不在项目目录下,返回原路径
- return pathname
- class RelativePathFormatter(logging.Formatter):
- def format(self, record):
- # 转换路径为相对路径
- record.pathname = _get_relative_path(record.pathname)
- return super().format(record)
- def setup_logging():
- # Create logs directory
- logs_dir = Path(WORK_DIR / "temp/logs/aider_coder")
- # mkdir -p
- logs_dir.mkdir(parents=True, exist_ok=True)
-
- # Create formatter
- formatter = RelativePathFormatter(
- '%(asctime)s - %(pathname)s:%(lineno)d - %(levelname)s - %(message)s'
- )
-
- # Configure logging
- handler = logging.StreamHandler(sys.stdout)
- handler.setFormatter(formatter)
-
- file_handler = logging.FileHandler(logs_dir / "aider_coder.log")
- file_handler.setFormatter(formatter)
-
- # Set root logger level to WARNING to suppress third-party logs
- logging.basicConfig(
- level=logging.WARNING,
- handlers=[handler, file_handler]
- )
-
- # Set our application logger to DEBUG
- logger = logging.getLogger('mylib')
- logger.setLevel(logging.DEBUG)
-
- # Add our handlers to the application logger
- logger.addHandler(handler)
- logger.addHandler(file_handler)
-
- # Set specific logger levels for common third-party libraries
- logging.getLogger('urllib3').setLevel(logging.WARNING)
- logging.getLogger('requests').setLevel(logging.WARNING)
- logging.getLogger('chardet').setLevel(logging.WARNING)
- logging.getLogger('openai').setLevel(logging.WARNING)
- logging.getLogger('httpcore').setLevel(logging.WARNING)
- logging.getLogger('httpx').setLevel(logging.WARNING)
|