| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- """
- 日志配置模块
- 统一配置所有模块的日志格式和级别
- """
- import logging
- import sys
- def setup_logging():
- """配置日志系统"""
- # 获取根日志器
- root_logger = logging.getLogger()
-
- # 创建统一的格式
- formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',
- datefmt='%Y-%m-%d %H:%M:%S')
-
- # 如果已经有handlers,先清除(避免重复配置)
- if root_logger.handlers:
- root_logger.handlers.clear()
-
- # 创建StreamHandler,输出到stderr(gunicorn会捕获stderr)
- console_handler = logging.StreamHandler(sys.stderr)
- console_handler.setFormatter(formatter)
- console_handler.setLevel(logging.INFO)
-
- # 配置根日志器
- root_logger.setLevel(logging.INFO)
- root_logger.addHandler(console_handler)
-
- # 配置第三方库的日志级别,确保能看到相关日志
- # httpx 是很多HTTP客户端库的底层,需要设置
- logging.getLogger("httpx").setLevel(logging.INFO)
- # urllib3 也是常见的HTTP库
- logging.getLogger("urllib3").setLevel(logging.INFO)
- # requests库
- logging.getLogger("requests").setLevel(logging.INFO)
- # volcenginesdkarkruntime (豆包SDK)
- logging.getLogger("volcenginesdkarkruntime").setLevel(logging.INFO)
- logging.getLogger("volcengine").setLevel(logging.INFO)
- # tos (火山引擎对象存储)
- logging.getLogger("tos").setLevel(logging.INFO)
- # OpenAI SDK
- logging.getLogger("openai").setLevel(logging.INFO)
- # conf模块相关的日志
- logging.getLogger("conf").setLevel(logging.INFO)
-
- # 配置chat和llm模块的logger(使用模块名作为logger名称)
- # 这些logger会继承根logger的handler,因为propagate默认是True
- for logger_name in ["chat", "llm"]:
- module_logger = logging.getLogger(logger_name)
- module_logger.setLevel(logging.INFO)
- module_logger.propagate = True # 确保传播到根logger
- # 不添加独立的handler,让它使用根logger的handler
-
- # 确保根日志器的级别设置为INFO,以便所有子logger都能输出
- root_logger.setLevel(logging.INFO)
-
- return logging.getLogger("TextGenerationAPI")
- # 自动配置日志(当模块被导入时)
- _ = setup_logging()
- # 提供便捷的logger获取方式
- def get_logger(name="TextGenerationAPI"):
- """获取指定名称的日志器"""
- return logging.getLogger(name)
|