63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
"""日志管理模块"""
|
|
import os
|
|
import logging
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
|
|
|
|
def setup_logging(
|
|
log_dir: str = "log",
|
|
log_file: str = "app.log",
|
|
level: int = logging.INFO,
|
|
format_string: str = '%(asctime)s - %(levelname)s - %(message)s',
|
|
when: str = "H",
|
|
interval: int = 12,
|
|
backup_count: int = 7
|
|
) -> None:
|
|
"""
|
|
配置日志系统
|
|
|
|
Args:
|
|
log_dir: 日志目录
|
|
log_file: 日志文件名
|
|
level: 日志级别
|
|
format_string: 日志格式
|
|
when: 轮转时间单位 (S:秒, M:分, H:时, D:天, W:周)
|
|
interval: 轮转间隔
|
|
backup_count: 保留的备份文件数量
|
|
"""
|
|
# 确保日志目录存在
|
|
if not os.path.exists(log_dir):
|
|
os.makedirs(log_dir)
|
|
|
|
# 配置日志处理器
|
|
handlers = [
|
|
TimedRotatingFileHandler(
|
|
os.path.join(log_dir, log_file),
|
|
when=when,
|
|
interval=interval,
|
|
backupCount=backup_count,
|
|
encoding='utf-8'
|
|
),
|
|
logging.StreamHandler()
|
|
]
|
|
|
|
# 配置日志
|
|
logging.basicConfig(
|
|
level=level,
|
|
format=format_string,
|
|
handlers=handlers
|
|
)
|
|
|
|
|
|
def get_logger(name: str) -> logging.Logger:
|
|
"""
|
|
获取日志记录器
|
|
|
|
Args:
|
|
name: 日志记录器名称,通常使用 __name__
|
|
|
|
Returns:
|
|
Logger 实例
|
|
"""
|
|
return logging.getLogger(name)
|