logger_config.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. """
  2. 日志配置模块
  3. 统一配置所有模块的日志格式和级别
  4. """
  5. import logging
  6. import sys
  7. def setup_logging():
  8. """配置日志系统"""
  9. # 获取根日志器
  10. root_logger = logging.getLogger()
  11. # 创建统一的格式
  12. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  13. datefmt='%Y-%m-%d %H:%M:%S')
  14. # 如果已经有handlers,先清除(避免重复配置)
  15. if root_logger.handlers:
  16. root_logger.handlers.clear()
  17. # 创建StreamHandler,输出到stderr(gunicorn会捕获stderr)
  18. console_handler = logging.StreamHandler(sys.stderr)
  19. console_handler.setFormatter(formatter)
  20. console_handler.setLevel(logging.INFO)
  21. # 配置根日志器
  22. root_logger.setLevel(logging.INFO)
  23. root_logger.addHandler(console_handler)
  24. # 配置第三方库的日志级别,确保能看到相关日志
  25. # httpx 是很多HTTP客户端库的底层,需要设置
  26. logging.getLogger("httpx").setLevel(logging.INFO)
  27. # urllib3 也是常见的HTTP库
  28. logging.getLogger("urllib3").setLevel(logging.INFO)
  29. # requests库
  30. logging.getLogger("requests").setLevel(logging.INFO)
  31. # volcenginesdkarkruntime (豆包SDK)
  32. logging.getLogger("volcenginesdkarkruntime").setLevel(logging.INFO)
  33. logging.getLogger("volcengine").setLevel(logging.INFO)
  34. # tos (火山引擎对象存储)
  35. logging.getLogger("tos").setLevel(logging.INFO)
  36. # OpenAI SDK
  37. logging.getLogger("openai").setLevel(logging.INFO)
  38. # conf模块相关的日志
  39. logging.getLogger("conf").setLevel(logging.INFO)
  40. # 配置chat和llm模块的logger(使用模块名作为logger名称)
  41. # 这些logger会继承根logger的handler,因为propagate默认是True
  42. for logger_name in ["chat", "llm"]:
  43. module_logger = logging.getLogger(logger_name)
  44. module_logger.setLevel(logging.INFO)
  45. module_logger.propagate = True # 确保传播到根logger
  46. # 不添加独立的handler,让它使用根logger的handler
  47. # 确保根日志器的级别设置为INFO,以便所有子logger都能输出
  48. root_logger.setLevel(logging.INFO)
  49. return logging.getLogger("TextGenerationAPI")
  50. # 自动配置日志(当模块被导入时)
  51. _ = setup_logging()
  52. # 提供便捷的logger获取方式
  53. def get_logger(name="TextGenerationAPI"):
  54. """获取指定名称的日志器"""
  55. return logging.getLogger(name)