logger.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. color = self.COLOR_MAP.get(record.levelno, '')
  16. msg = color + msg + Style.RESET_ALL
  17. record.message = msg
  18. return super().format(record)
  19. # Configure logger
  20. logger = logging.getLogger('repo_sync')
  21. logger.setLevel(logging.INFO)
  22. # Create console handler
  23. console_handler = logging.StreamHandler()
  24. console_handler.setLevel(logging.INFO)
  25. # Create file handler
  26. file_handler = logging.FileHandler('repo_sync.log')
  27. file_handler.setLevel(logging.INFO)
  28. # Use the custom colored formatter
  29. console_formatter = ColoredFormatter('%(asctime)s - %(levelname)s - %(message)s')
  30. console_handler.setFormatter(console_formatter)
  31. file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  32. file_handler.setFormatter(file_formatter)
  33. # Add handler to logger
  34. logger.addHandler(console_handler)
  35. logger.addHandler(file_handler)
  36. # Export logger
  37. __all__ = ['logger']