logger.py 1.2 KB

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