# -*- encoding=utf8 -*- """ 日志管理模块 提供统一的日志记录,同时输出到控制台和文件,支持日志轮转 """ import os import logging from logging.handlers import RotatingFileHandler from config import LOG_DIR, LOG_FILE, LOG_MAX_BYTES, LOG_BACKUP_COUNT, LOG_FORMAT, LOG_DATE_FORMAT def setup_logger(name='dispatcher', level=logging.INFO): """创建并配置 logger Args: name: logger 名称 level: 日志级别 Returns: logging.Logger 实例 """ logger = logging.getLogger(name) # 避免重复添加 handler if logger.handlers: return logger logger.setLevel(level) formatter = logging.Formatter(LOG_FORMAT, datefmt=LOG_DATE_FORMAT) # 控制台 handler(保留原有的控制台输出) console_handler = logging.StreamHandler() console_handler.setLevel(level) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # 文件 handler(带日志轮转) os.makedirs(LOG_DIR, exist_ok=True) log_path = os.path.join(LOG_DIR, LOG_FILE) file_handler = RotatingFileHandler( log_path, maxBytes=LOG_MAX_BYTES, backupCount=LOG_BACKUP_COUNT, encoding='utf-8' ) file_handler.setLevel(level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger # 全局 logger 实例,直接导入使用 logger = setup_logger()