logger.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """日志配置"""
  2. import logging
  3. import sys
  4. from pathlib import Path
  5. from config import Config
  6. def setup_logger(name: str = "learning_agent") -> logging.Logger:
  7. """
  8. 配置并返回日志记录器
  9. Args:
  10. name: 日志记录器名称
  11. Returns:
  12. 配置好的日志记录器
  13. """
  14. logger = logging.getLogger(name)
  15. logger.setLevel(getattr(logging, Config.LOG_LEVEL.upper()))
  16. # 避免重复添加 handler
  17. if logger.handlers:
  18. return logger
  19. # 控制台 handler
  20. console_handler = logging.StreamHandler(sys.stdout)
  21. console_handler.setLevel(logging.INFO)
  22. # 文件 handler
  23. log_dir = Path.home() / ".learningAgent" / "logs"
  24. log_dir.mkdir(parents=True, exist_ok=True)
  25. file_handler = logging.FileHandler(log_dir / "app.log")
  26. file_handler.setLevel(logging.DEBUG)
  27. # 格式化
  28. formatter = logging.Formatter(
  29. "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
  30. datefmt="%Y-%m-%d %H:%M:%S",
  31. )
  32. console_handler.setFormatter(formatter)
  33. file_handler.setFormatter(formatter)
  34. logger.addHandler(console_handler)
  35. logger.addHandler(file_handler)
  36. return logger