Logger.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import logging
  2. import os
  3. from datetime import datetime
  4. LOG_FORMAT = "%(asctime)s [%(levelname)s] %(message)s"
  5. def _build_logger(name: str, log_file: str) -> logging.Logger:
  6. logger_obj = logging.getLogger(name)
  7. if logger_obj.handlers:
  8. return logger_obj
  9. logger_obj.setLevel(logging.DEBUG)
  10. logger_obj.propagate = False
  11. console_handler = logging.StreamHandler()
  12. console_handler.setLevel(logging.INFO)
  13. file_handler = logging.FileHandler(log_file, encoding="utf-8")
  14. file_handler.setLevel(logging.DEBUG)
  15. formatter = logging.Formatter(LOG_FORMAT)
  16. console_handler.setFormatter(formatter)
  17. file_handler.setFormatter(formatter)
  18. logger_obj.addHandler(console_handler)
  19. logger_obj.addHandler(file_handler)
  20. return logger_obj
  21. def get_spider_logger(spider_name: str) -> logging.Logger:
  22. base_dir = os.path.join("logs", spider_name)
  23. os.makedirs(base_dir, exist_ok=True)
  24. time_str = datetime.now().strftime("%Y-%m-%d_%H-%M")
  25. log_file = os.path.join(base_dir, f"{spider_name}_{time_str}.log")
  26. return _build_logger(f"spider.{spider_name}", log_file)
  27. import sys
  28. # ??????????????? logger ???? logs/<prefix>/ ????
  29. # ???????????????? logs/ ??????????
  30. _script_name = os.path.basename(sys.argv[0]).lower()
  31. if "jd" in _script_name:
  32. _prefix = "jd"
  33. elif "taobao" in _script_name:
  34. _prefix = "taobao"
  35. elif "yaofangwang" in _script_name:
  36. _prefix = "yaofangwang"
  37. else:
  38. _prefix = "app"
  39. logger = get_spider_logger(_prefix)