|
@@ -2,35 +2,43 @@ import logging
|
|
import os
|
|
import os
|
|
import sys
|
|
import sys
|
|
from pathlib import Path
|
|
from pathlib import Path
|
|
-
|
|
|
|
import colorlog
|
|
import colorlog
|
|
|
|
+from logging.handlers import TimedRotatingFileHandler
|
|
|
|
+import datetime
|
|
|
|
|
|
# 创建日志记录器
|
|
# 创建日志记录器
|
|
log = logging.getLogger(__name__)
|
|
log = logging.getLogger(__name__)
|
|
log.setLevel(logging.INFO)
|
|
log.setLevel(logging.INFO)
|
|
|
|
|
|
-# project_root = Path(os.getcwd()).parent.parent
|
|
|
|
|
|
+# 获取项目根目录
|
|
project_root = Path(os.path.abspath(os.path.dirname(__file__))).parent.parent
|
|
project_root = Path(os.path.abspath(os.path.dirname(__file__))).parent.parent
|
|
|
|
|
|
|
|
+# 日志目录设置
|
|
if sys.platform.startswith('linux'):
|
|
if sys.platform.startswith('linux'):
|
|
- # Linux环境指定为/home目录
|
|
|
|
- log_dir = r'/home/crossborder/logs'
|
|
|
|
|
|
+ log_dir = Path('/home/crossborder/logs')
|
|
else:
|
|
else:
|
|
log_dir = project_root / 'logs'
|
|
log_dir = project_root / 'logs'
|
|
|
|
|
|
os.makedirs(log_dir, exist_ok=True) # 自动创建目录(如果不存在)
|
|
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 = colorlog.StreamHandler()
|
|
-console_handler.setLevel(logging.DEBUG)
|
|
|
|
|
|
+console_handler.setLevel(logging.DEBUG if os.getenv('DEBUG') else logging.INFO)
|
|
|
|
|
|
# 文件格式器
|
|
# 文件格式器
|
|
plain_formatter = logging.Formatter(
|
|
plain_formatter = logging.Formatter(
|
|
@@ -58,3 +66,15 @@ console_handler.setFormatter(color_formatter)
|
|
# 添加处理器到记录器
|
|
# 添加处理器到记录器
|
|
log.addHandler(file_handler)
|
|
log.addHandler(file_handler)
|
|
log.addHandler(console_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级别日志 - 严重错误")
|