Files
chatbot-napcat/model/logger.py

61 lines
1.8 KiB
Python
Raw 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.

import logging
from logging.handlers import RotatingFileHandler
from datetime import datetime
from pathlib import Path
def setup_logger(log_file=None, log_level=logging.INFO, max_bytes=10485760, backup_count=5):
"""
初始化日志记录器,将日志按指定格式输出并记录到文件
Args:
log_file (str): 日志文件路径默认为None会自动生成以当天日期命名的日志文件
log_level: 日志级别
max_bytes (int): 单个日志文件最大字节数
backup_count (int): 保留的备份日志文件数量
Returns:
logging.Logger: 配置好的日志记录器
"""
# 创建logger
logger = logging.getLogger('chatbot-napcat')
logger.setLevel(log_level)
logger.propagate = False
# 避免重复添加handler
if logger.handlers:
return logger
# 创建logs目录如果不存在
log_dir = Path('logs')
log_dir.mkdir(exist_ok=True)
# 如果未指定日志文件名,则使用当天日期命名
if log_file is None:
today = datetime.now().strftime('%Y-%m-%d')
log_file = log_dir / f'{today}.log'
# 创建格式化器
formatter = logging.Formatter(
'[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)d] - %(message)s'
)
# 创建文件处理器(带轮转)
file_handler = RotatingFileHandler(
log_file,
maxBytes=max_bytes,
backupCount=backup_count,
encoding='utf-8'
)
file_handler.setLevel(log_level)
file_handler.setFormatter(formatter)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(log_level)
console_handler.setFormatter(formatter)
# 添加处理器到logger
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger