1
0

Logger.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import logging
  2. from logging.handlers import TimedRotatingFileHandler
  3. import os
  4. from datetime import datetime
  5. LOG_FORMAT = "%(asctime)s [%(levelname)s] %(message)s"
  6. def _build_logger(name: str, log_file: str) -> logging.Logger:
  7. logger_obj = logging.getLogger(name)
  8. if logger_obj.handlers:
  9. return logger_obj
  10. logger_obj.setLevel(logging.DEBUG)
  11. logger_obj.propagate = False
  12. console_handler = logging.StreamHandler()
  13. console_handler.setLevel(logging.INFO)
  14. file_handler = TimedRotatingFileHandler(
  15. log_file,
  16. when='midnight',
  17. interval=1,
  18. backupCount=30,
  19. encoding="utf-8"
  20. )
  21. file_handler.setLevel(logging.DEBUG)
  22. formatter = logging.Formatter(LOG_FORMAT)
  23. console_handler.setFormatter(formatter)
  24. file_handler.setFormatter(formatter)
  25. logger_obj.addHandler(console_handler)
  26. logger_obj.addHandler(file_handler)
  27. return logger_obj
  28. def get_spider_logger(spider_name: str) -> logging.Logger:
  29. base_dir = os.path.join("logs", spider_name)
  30. os.makedirs(base_dir, exist_ok=True)
  31. today_str = datetime.now().strftime("%Y-%m-%d")
  32. log_file = os.path.join(base_dir, f"taobao_{today_str}.log")
  33. return _build_logger(f"spider.{spider_name}", log_file)
  34. # 获取今天日期字符串
  35. today_str = datetime.now().strftime("%Y-%m-%d")
  36. legacy_dir = "logs"
  37. os.makedirs(legacy_dir, exist_ok=True)
  38. legacy_file = os.path.join(legacy_dir, f"taobao_{today_str}.log")
  39. logger = _build_logger("MyLogger", legacy_file)
  40. # 测试
  41. # logger.debug("调试信息")
  42. # logger.info("普通提示信息")
  43. # logger.warning("警告信息")
  44. # logger.error("错误信息")
  45. # logger.critical("严重错误信息")