feat: 支持流式输出

This commit is contained in:
Cassianvale
2025-03-04 15:03:08 +08:00
parent 17ed403c3e
commit 6df78314d6
5 changed files with 928 additions and 166 deletions

58
logger.py Normal file
View File

@@ -0,0 +1,58 @@
from loguru import logger
import sys
import os
from datetime import datetime
# 获取当前时间作为日志文件名的一部分
current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
# 创建日志目录
log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "logs")
os.makedirs(log_dir, exist_ok=True)
# 配置日志
logger.remove() # 移除默认的处理器
# 添加标准输出处理器(控制台)
logger.add(
sys.stdout,
format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
level="DEBUG"
)
# 添加文件处理器debug级别
logger.add(
os.path.join(log_dir, f"debug_{current_time}.log"),
format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level: <8} | {name}:{line} - {message}",
level="DEBUG",
rotation="100 MB",
retention="1 week"
)
# 添加文件处理器error级别
logger.add(
os.path.join(log_dir, f"error_{current_time}.log"),
format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level: <8} | {name}:{line} - {message}",
level="ERROR",
rotation="100 MB",
retention="1 month"
)
# 添加流处理器(用于记录流式输出)
logger.add(
os.path.join(log_dir, f"stream_{current_time}.log"),
format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {message}",
filter=lambda record: "STREAM" in record["extra"],
level="INFO"
)
# 创建专用于流式输出的日志器
stream_logger = logger.bind(STREAM=True)
def get_logger():
"""获取通用日志器"""
return logger
def get_stream_logger():
"""获取流式输出专用日志器"""
return stream_logger