log.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import logging
  2. import os
  3. import colorlog
  4. # 创建日志记录器
  5. log = logging.getLogger(__name__)
  6. log.setLevel(logging.INFO)
  7. log_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../logs'))
  8. os.makedirs(log_dir, exist_ok=True) # 自动创建目录(如果不存在)
  9. # 创建文件处理器
  10. file_handler = logging.FileHandler('../logs/cross.log', encoding='utf-8')
  11. file_handler.setLevel(logging.INFO)
  12. # 创建控制台处理器
  13. console_handler = logging.StreamHandler()
  14. console_handler.setLevel(logging.INFO)
  15. # 控制台处理器(带颜色)
  16. console_handler = colorlog.StreamHandler()
  17. console_handler.setLevel(logging.DEBUG)
  18. # 文件格式器
  19. plain_formatter = logging.Formatter(
  20. '%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s',
  21. datefmt='%Y-%m-%d %H:%M:%S'
  22. )
  23. # 控制台颜色格式器
  24. color_formatter = colorlog.ColoredFormatter(
  25. '%(log_color)s%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s',
  26. datefmt='%Y-%m-%d %H:%M:%S',
  27. log_colors={
  28. 'DEBUG': 'cyan',
  29. 'INFO': 'green',
  30. 'WARNING': 'yellow',
  31. 'ERROR': 'red',
  32. 'CRITICAL': 'red,bg_white',
  33. }
  34. )
  35. # 应用格式器
  36. file_handler.setFormatter(plain_formatter)
  37. console_handler.setFormatter(color_formatter)
  38. # 添加处理器到记录器
  39. log.addHandler(file_handler)
  40. log.addHandler(console_handler)