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')