autool-dispatcher/log_manager.py
2026-06-17 19:50:39 +08:00

56 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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()