58 lines
1.8 KiB
Python
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
|