| 123456789101112131415161718192021222324252627282930313233343536 |
- # 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
|