#!/usr/bin/env python3 """ Token调试日志配置 统一配置loguru将所有token调试日志保存到指定文件 """ from loguru import logger import sys import os from datetime import datetime def setup_token_debug_logger(log_file_path=None): """ 配置token调试专用的logger Args: log_file_path: 日志文件路径,如果为None则自动生成 """ # 移除默认的控制台handler logger.remove() # 如果没有指定日志文件路径,自动生成 if log_file_path is None: timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") log_file_path = f"token_debug_{timestamp}.log" # 确保日志目录存在 log_dir = os.path.dirname(log_file_path) if os.path.dirname(log_file_path) else "." os.makedirs(log_dir, exist_ok=True) # 配置文件输出 - 包含所有级别的日志 logger.add( log_file_path, format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level: <8} | {name}:{function}:{line} - {message}", level="DEBUG", rotation="100 MB", # 文件大小达到100MB时轮转 retention="7 days", # 保留7天的日志 compression="zip", # 压缩旧日志 enqueue=True, # 异步写入,提高性能 backtrace=True, # 显示完整的错误堆栈 diagnose=True # 显示变量值 ) # 同时输出到控制台 - 只显示INFO及以上级别 logger.add( sys.stderr, format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level="INFO", colorize=True ) logger.info(f"Token调试日志已配置,文件保存到: {os.path.abspath(log_file_path)}") return log_file_path def get_token_debug_logger(): """ 获取配置好的token调试logger """ return logger if __name__ == "__main__": # 测试日志配置 log_file = setup_token_debug_logger("token_debug_test.log") test_logger = get_token_debug_logger() test_logger.info("[TOKEN_DEBUG] 测试日志配置") test_logger.info("[TEMPLATE_DEBUG] 模板调试日志测试") test_logger.info("[INFER_SEQLEN] 截断策略日志测试") print(f"测试完成,日志文件: {log_file}")