logger.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import logging
  2. from termcolor import colored
  3. class ColoredFormatter(logging.Formatter):
  4. def format(self, record):
  5. # 保留原始消息不变
  6. import colorama
  7. colorama.init() # 解决windows cmd 颜色显示问题
  8. original_msg = record.msg
  9. if record.levelno == logging.DEBUG:
  10. record.msg = colored(record.msg, 'blue')
  11. elif record.levelno == logging.INFO:
  12. record.msg = colored(record.msg, 'green')
  13. elif record.levelno == logging.WARNING:
  14. record.msg = colored(record.msg, 'yellow')
  15. elif record.levelno == logging.ERROR:
  16. record.msg = colored(record.msg, 'red')
  17. elif record.levelno == logging.CRITICAL:
  18. record.msg = colored(record.msg, 'magenta')
  19. # 调用父类格式化方法
  20. formatted_message = super().format(record)
  21. # 恢复原始消息
  22. record.msg = original_msg
  23. return formatted_message
  24. # Configure logger
  25. logger = logging.getLogger('repo_sync')
  26. logger.setLevel(logging.INFO)
  27. # Create console handler
  28. console_handler = logging.StreamHandler()
  29. console_handler.setLevel(logging.INFO)
  30. # Create file handler
  31. file_handler = logging.FileHandler('repo_sync.log')
  32. file_handler.setLevel(logging.INFO)
  33. # Use the custom colored formatter
  34. console_formatter = ColoredFormatter('%(asctime)s - %(levelname)s - %(message)s')
  35. console_handler.setFormatter(console_formatter)
  36. file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  37. file_handler.setFormatter(file_formatter)
  38. # Add handler to logger
  39. logger.addHandler(console_handler)
  40. logger.addHandler(file_handler)
  41. # Export logger
  42. __all__ = ['logger']