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