trans_log.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2024/5/16
  3. # @Author : 魏志亮
  4. import logging
  5. import logging.handlers
  6. import os
  7. # 日志配置函数化,避免全局副作用
  8. def setup_logger(log_path: str = "/data/logs"):
  9. logger = logging.getLogger(__name__)
  10. logger.setLevel(logging.DEBUG)
  11. # 避免重复添加handler
  12. if logger.handlers:
  13. return logger
  14. os.makedirs(log_path, exist_ok=True)
  15. # 1. 创建并配置TimedRotatingFileHandler(所有级别的文件输出)
  16. all_log_handler = logging.handlers.TimedRotatingFileHandler(
  17. os.path.join(log_path, "info.log"), 'D', backupCount=90
  18. )
  19. # 2. 创建并配置ERROR级别的TimedRotatingFileHandler
  20. error_log_handler = logging.handlers.TimedRotatingFileHandler(
  21. os.path.join(log_path, "error.log"), 'D', backupCount=90
  22. )
  23. error_log_handler.setLevel(logging.ERROR)
  24. # 3. 创建并配置StreamHandler(控制台输出)
  25. console_handler = logging.StreamHandler()
  26. console_handler.setLevel(logging.INFO)
  27. # 定义日志格式
  28. fmt = logging.Formatter(
  29. "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s",
  30. "%Y-%m-%d %H:%M:%S"
  31. )
  32. # 设置各个handler的格式
  33. all_log_handler.setFormatter(fmt)
  34. error_log_handler.setFormatter(fmt)
  35. console_handler.setFormatter(fmt)
  36. # 添加handler
  37. logger.addHandler(all_log_handler)
  38. logger.addHandler(error_log_handler)
  39. logger.addHandler(console_handler)
  40. return logger
  41. logger = setup_logger("/home/trans/project/logs/")