Files
douyin-imbot/douyin_imbot/utils/logger.py
T
2025-04-02 21:01:25 +08:00

58 lines
1.8 KiB
Python

import os
import logging
from logging.handlers import RotatingFileHandler
import time
def setup_logger():
"""
配置应用程序日志记录器
- 将日志输出到控制台
- 将日志保存到文件(带有时间戳的文件名)
- 使用轮换文件处理程序限制日志文件大小
"""
# 确保日志目录存在
logs_dir = os.path.join(
os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "logs"
)
os.makedirs(logs_dir, exist_ok=True)
# 创建时间戳日志文件名
timestamp = time.strftime("%Y%m%d-%H%M%S")
log_file = os.path.join(logs_dir, f"douyin_imbot_{timestamp}.log")
# 配置根日志记录器
root_logger = logging.getLogger()
root_logger.setLevel(logging.INFO)
# 清除任何现有的处理程序
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
# 创建控制台处理程序
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_format = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
console_handler.setFormatter(console_format)
root_logger.addHandler(console_handler)
# 创建文件处理程序(限制每个文件大小为5MB,最多保留5个备份)
file_handler = RotatingFileHandler(
log_file, maxBytes=5 * 1024 * 1024, backupCount=5, encoding="utf-8" # 5 MB
)
file_handler.setLevel(logging.INFO)
file_format = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
file_handler.setFormatter(file_format)
root_logger.addHandler(file_handler)
# 记录启动信息
logging.info("日志系统初始化完成")
logging.info(f"日志文件: {log_file}")
return root_logger