import logging from logging.handlers import TimedRotatingFileHandler 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) today_str = datetime.now().strftime("%Y-%m-%d") log_file = os.path.join(base_dir, f"taobao_{today_str}.log") return _build_logger(f"spider.{spider_name}", log_file) # 获取今天日期字符串 today_str = datetime.now().strftime("%Y-%m-%d") legacy_dir = "logs" os.makedirs(legacy_dir, exist_ok=True) legacy_file = os.path.join(legacy_dir, f"taobao_{today_str}.log") logger = _build_logger("MyLogger", legacy_file) # 测试 # logger.debug("调试信息") # logger.info("普通提示信息") # logger.warning("警告信息") # logger.error("错误信息") # logger.critical("严重错误信息")