log.py 1.4 KB

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