|
|
@@ -0,0 +1,59 @@
|
|
|
+import logging
|
|
|
+import sys
|
|
|
+import os
|
|
|
+from pathlib import Path
|
|
|
+from mylib.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)
|