Pārlūkot izejas kodu

日志按日期归档归档

01495251 1 mēnesi atpakaļ
vecāks
revīzija
122e049e45
1 mainītis faili ar 32 papildinājumiem un 12 dzēšanām
  1. 32 12
      crossborder/utils/log.py

+ 32 - 12
crossborder/utils/log.py

@@ -2,35 +2,43 @@ import logging
 import os
 import sys
 from pathlib import Path
-
 import colorlog
+from logging.handlers import TimedRotatingFileHandler
+import datetime
 
 # 创建日志记录器
 log = logging.getLogger(__name__)
 log.setLevel(logging.INFO)
 
-# project_root = Path(os.getcwd()).parent.parent
+# 获取项目根目录
 project_root = Path(os.path.abspath(os.path.dirname(__file__))).parent.parent
 
+# 日志目录设置
 if sys.platform.startswith('linux'):
-    # Linux环境指定为/home目录
-    log_dir = r'/home/crossborder/logs'
+    log_dir = Path('/home/crossborder/logs')
 else:
     log_dir = project_root / 'logs'
 
 os.makedirs(log_dir, exist_ok=True)  # 自动创建目录(如果不存在)
 
-# 创建文件处理器
-file_handler = logging.FileHandler(f'{log_dir}/cross.log', encoding='utf-8')
-file_handler.setLevel(logging.INFO)
+# 创建带日期归档的文件处理器 - 关键修改点
+log_file = log_dir / 'cross.log'
+file_handler = TimedRotatingFileHandler(
+    filename=str(log_file),
+    when='midnight',  # 每天午夜切换新日志
+    interval=1,       # 每天的间隔
+    backupCount=30,    # 保留30天的日志
+    encoding='utf-8',
+    utc=False         # 使用本地时间
+)
 
-# 创建控制台处理器
-console_handler = logging.StreamHandler()
-console_handler.setLevel(logging.INFO)
+# 设置时间后缀格式 - 在日志文件名后添加日期
+file_handler.suffix = "%Y-%m-%d"
+file_handler.setLevel(logging.INFO)
 
-# 控制台处理器(带颜色)
+# 创建控制台处理器(带颜色)
 console_handler = colorlog.StreamHandler()
-console_handler.setLevel(logging.DEBUG)
+console_handler.setLevel(logging.DEBUG if os.getenv('DEBUG') else logging.INFO)
 
 # 文件格式器
 plain_formatter = logging.Formatter(
@@ -58,3 +66,15 @@ console_handler.setFormatter(color_formatter)
 # 添加处理器到记录器
 log.addHandler(file_handler)
 log.addHandler(console_handler)
+
+# 禁用不必要库的日志
+logging.getLogger("urllib3").setLevel(logging.WARNING)
+logging.getLogger("selenium").setLevel(logging.WARNING)
+
+# 测试日志
+if __name__ == "__main__":
+    log.debug("DEBUG级别日志 - 通常不会显示")
+    log.info("INFO级别日志 - 程序运行信息")
+    log.warning("WARNING级别日志 - 需要注意的问题")
+    log.error("ERROR级别日志 - 错误信息")
+    log.critical("CRITICAL级别日志 - 严重错误")