From dd2d40c55bd0427f824a1fee8dc39bd52575364f Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 4 Feb 2026 18:06:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(logger):=20=E9=87=8D=E6=9E=84=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加RotatingFileHandler支持日志轮转 - 配置多个日志处理器分别输出到控制台、全部日志文件和错误日志文件 - 设置不同日志级别的输出过滤 - 确保日志文件目录存在并正确初始化日志系统 - 移除原有的基础日志配置方式 --- index.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/index.py b/index.py index df2476d..642ed0b 100644 --- a/index.py +++ b/index.py @@ -25,6 +25,8 @@ import sys import time import signal import logging +import os +from logging.handlers import RotatingFileHandler from dotenv import load_dotenv @@ -34,11 +36,55 @@ from services.task_executor import TaskExecutor from constant import SOFTWARE_VERSION # 日志配置 -logging.basicConfig( - level=logging.INFO, - format='[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s', - datefmt='%Y-%m-%d %H:%M:%S' -) +def setup_logging(): + """配置日志系统,输出到控制台和文件""" + # 日志格式 + log_format = '[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s' + date_format = '%Y-%m-%d %H:%M:%S' + formatter = logging.Formatter(log_format, date_format) + + # 获取根logger + root_logger = logging.getLogger() + root_logger.setLevel(logging.INFO) + + # 清除已有的handlers(避免重复) + root_logger.handlers.clear() + + # 1. 控制台handler(只输出WARNING及以上级别) + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.WARNING) + console_handler.setFormatter(formatter) + root_logger.addHandler(console_handler) + + # 确保日志文件所在目录存在 + log_dir = os.path.dirname(os.path.abspath(__file__)) + + # 2. 所有日志文件handler(all_log.log) + all_log_path = os.path.join(log_dir, 'all_log.log') + all_log_handler = RotatingFileHandler( + all_log_path, + maxBytes=10*1024*1024, # 10MB + backupCount=5, + encoding='utf-8' + ) + all_log_handler.setLevel(logging.DEBUG) # 记录所有级别 + all_log_handler.setFormatter(formatter) + root_logger.addHandler(all_log_handler) + + # 3. 错误日志文件handler(error.log) + error_log_path = os.path.join(log_dir, 'error.log') + error_log_handler = RotatingFileHandler( + error_log_path, + maxBytes=10*1024*1024, # 10MB + backupCount=5, + encoding='utf-8' + ) + error_log_handler.setLevel(logging.ERROR) # 只记录ERROR及以上 + error_log_handler.setFormatter(formatter) + root_logger.addHandler(error_log_handler) + +# 初始化日志系统 +setup_logging() logger = logging.getLogger('worker')