Logger.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 = logging.FileHandler(log_file, encoding="utf-8")
  15. file_handler.setLevel(logging.DEBUG)
  16. formatter = logging.Formatter(LOG_FORMAT)
  17. console_handler.setFormatter(formatter)
  18. file_handler.setFormatter(formatter)
  19. logger_obj.addHandler(console_handler)
  20. logger_obj.addHandler(file_handler)
  21. return logger_obj
  22. def get_spider_logger(spider_name: str) -> logging.Logger:
  23. base_dir = os.path.join("logs", spider_name)
  24. os.makedirs(base_dir, exist_ok=True)
  25. today_str = datetime.now().strftime("%Y-%m-%d")
  26. log_file = os.path.join(base_dir, f"taobao_{today_str}.log")
  27. return _build_logger(f"spider.{spider_name}", log_file)
  28. # 获取今天日期字符串
  29. today_str = datetime.now().strftime("%Y-%m-%d")
  30. legacy_dir = "logs"
  31. os.makedirs(legacy_dir, exist_ok=True)
  32. legacy_file = os.path.join(legacy_dir, f"taobao_{today_str}.log")
  33. logger = _build_logger("MyLogger", legacy_file)
  34. # 测试
  35. # logger.debug("调试信息")
  36. # logger.info("普通提示信息")
  37. # logger.warning("警告信息")
  38. # logger.error("错误信息")
  39. # logger.critical("严重错误信息")