| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import logging
- import os
- from datetime import datetime
- LOG_FORMAT = "%(asctime)s [%(levelname)s] %(message)s"
- def _build_logger(name: str, log_file: str) -> logging.Logger:
- logger_obj = logging.getLogger(name)
- if logger_obj.handlers:
- return logger_obj
- logger_obj.setLevel(logging.DEBUG)
- logger_obj.propagate = False
- console_handler = logging.StreamHandler()
- console_handler.setLevel(logging.INFO)
- file_handler = logging.FileHandler(log_file, encoding="utf-8")
- file_handler.setLevel(logging.DEBUG)
- formatter = logging.Formatter(LOG_FORMAT)
- console_handler.setFormatter(formatter)
- file_handler.setFormatter(formatter)
- logger_obj.addHandler(console_handler)
- logger_obj.addHandler(file_handler)
- return logger_obj
- def get_spider_logger(spider_name: str) -> logging.Logger:
- base_dir = os.path.join("logs", spider_name)
- os.makedirs(base_dir, exist_ok=True)
- time_str = datetime.now().strftime("%Y-%m-%d_%H-%M")
- log_file = os.path.join(base_dir, f"{spider_name}_{time_str}.log")
- return _build_logger(f"spider.{spider_name}", log_file)
- import sys
- # ??????????????? logger ???? logs/<prefix>/ ????
- # ???????????????? logs/ ??????????
- _script_name = os.path.basename(sys.argv[0]).lower()
- if "jd" in _script_name:
- _prefix = "jd"
- elif "taobao" in _script_name:
- _prefix = "taobao"
- elif "yaofangwang" in _script_name:
- _prefix = "yaofangwang"
- else:
- _prefix = "app"
- logger = get_spider_logger(_prefix)
|