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) logging.basicConfig( level=logging.DEBUG, handlers=[handler, file_handler] ) # Set specific logger levels logging.getLogger('urllib3').setLevel(logging.WARNING) logging.getLogger('requests').setLevel(logging.WARNING) logging.getLogger('chardet').setLevel(logging.WARNING)