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// ???? # ???????????????? 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)