import logging import sys import os from pathlib import Path from config.settings import OUTPUT_DIR, WORK_DIR 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) # 获取根logger root_logger = logging.getLogger() root_logger.setLevel(logging.WARNING) # 设置根logger为WARNING级别 # 创建项目特定的logger project_logger = logging.getLogger('excel_tool') project_logger.setLevel(logging.DEBUG) project_logger.propagate = False # 防止日志传播到根logger # 添加handler到项目logger project_logger.addHandler(handler) project_logger.addHandler(file_handler) # 设置其他库的日志级别为WARNING logging.getLogger('urllib3').setLevel(logging.WARNING) logging.getLogger('requests').setLevel(logging.WARNING) logging.getLogger('chardet').setLevel(logging.WARNING)