# mt_spider/logger.py import os import logging from datetime import datetime LOG_DIR = os.path.join(os.path.dirname(__file__), '..', 'logs') os.makedirs(LOG_DIR, exist_ok=True) def setup_logger(name: str = "mt_spider"): """初始化日志,每个 name 独立的日志文件,每天一个新文件,不旋转(避免 Windows 多进程文件锁冲突)""" logger = logging.getLogger(name) logger.setLevel(logging.INFO) fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') console = logging.StreamHandler() console.setFormatter(fmt) today = datetime.now().strftime('%Y-%m-%d') log_file = os.path.join(LOG_DIR, f'{name}_{today}.log') file_handler = logging.FileHandler(log_file, encoding='utf-8') file_handler.setFormatter(fmt) if not logger.handlers: logger.addHandler(console) logger.addHandler(file_handler) # 同时给根 logger 也加上文件 handler(保证 logging.info() 直接调用也能写文件) root = logging.getLogger() root.setLevel(logging.INFO) # 防止重复添加 existing_files = {h.baseFilename for h in root.handlers if hasattr(h, 'baseFilename')} if log_file not in existing_files: root.addHandler(file_handler) return logger