logger_config.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import os
  2. import logging
  3. from colorama import Fore, Style, init
  4. current_dir = os.path.dirname(os.path.abspath(__file__))
  5. log_path = os.path.join(current_dir, "..", "logs", "intent.log")
  6. # 初始化 colorama
  7. init(autoreset=True)
  8. class ColoredFormatter(logging.Formatter):
  9. COLORS = {
  10. 'DEBUG': Fore.CYAN,
  11. 'INFO': Fore.GREEN,
  12. 'WARNING': Fore.YELLOW,
  13. 'ERROR': Fore.RED,
  14. 'CRITICAL': Fore.RED + Style.BRIGHT,
  15. }
  16. def format(self, record):
  17. levelname = record.levelname
  18. if levelname in self.COLORS:
  19. record.levelname = f"{self.COLORS[levelname]}{levelname}{Style.RESET_ALL}"
  20. record.msg = f"{self.COLORS[levelname]}{record.msg}{Style.RESET_ALL}"
  21. return super().format(record)
  22. def setup_logger(name):
  23. # 配置日志
  24. logger = logging.getLogger(name)
  25. logger.setLevel(logging.DEBUG)
  26. # 创建控制台处理器
  27. # console_handler = logging.StreamHandler()
  28. # console_handler.setLevel(logging.DEBUG)
  29. # 创建文件处理器
  30. file_handler = logging.FileHandler(log_path, encoding='utf-8')
  31. file_handler.setLevel(logging.DEBUG)
  32. # 创建格式化器
  33. formatter = ColoredFormatter('%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
  34. # console_handler.setFormatter(formatter)
  35. file_handler.setFormatter(formatter)
  36. # 将处理器添加到日志记录器
  37. # logger.addHandler(console_handler)
  38. logger.addHandler(file_handler)
  39. return logger