logger.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import logging
  2. from colorama import Fore, Style
  3. import colorama
  4. colorama.init()
  5. class ColoredFormatter(logging.Formatter):
  6. COLOR_MAP = {
  7. logging.DEBUG: Fore.BLUE,
  8. logging.INFO: Fore.GREEN,
  9. logging.WARNING: Fore.YELLOW,
  10. logging.ERROR: Fore.RED,
  11. logging.CRITICAL: Fore.MAGENTA
  12. }
  13. def format(self, record):
  14. msg = record.getMessage()
  15. original_msg = record.msg
  16. color = self.COLOR_MAP.get(record.levelno, '')
  17. msg = color + msg + Style.RESET_ALL
  18. record.msg = msg
  19. formatted_message = super().format(record)
  20. # 恢复原始消息
  21. record.msg = original_msg
  22. return formatted_message
  23. # Configure logger
  24. logger = logging.getLogger('repo_sync')
  25. logger.setLevel(logging.INFO)
  26. # Create console handler
  27. console_handler = logging.StreamHandler()
  28. console_handler.setLevel(logging.INFO)
  29. # Create file handler
  30. file_handler = logging.FileHandler('repo_sync.log')
  31. file_handler.setLevel(logging.INFO)
  32. # Use the custom colored formatter
  33. console_formatter = ColoredFormatter('%(asctime)s - %(levelname)s - %(message)s')
  34. console_handler.setFormatter(console_formatter)
  35. file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  36. file_handler.setFormatter(file_formatter)
  37. # Add handler to logger
  38. logger.addHandler(console_handler)
  39. logger.addHandler(file_handler)
  40. # Export logger
  41. __all__ = ['logger']