logger.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import os
  2. import logging
  3. from logging.handlers import TimedRotatingFileHandler
  4. # ===============================
  5. # 基本配置
  6. # ===============================
  7. LOG_DIR = os.path.join(os.path.dirname(__file__), "../../logs")
  8. os.makedirs(LOG_DIR, exist_ok=True)
  9. LOG_FILE = os.path.join(LOG_DIR, "app.log")
  10. # ===============================
  11. # 日志格式
  12. # ===============================
  13. LOG_FORMAT = "[%(asctime)s] [%(levelname)s] [%(name)s] [%(filename)s:%(lineno)d] - %(message)s"
  14. DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
  15. # ===============================
  16. # 主 logger 实例
  17. # ===============================
  18. logger = logging.getLogger("app")
  19. logger.setLevel(logging.INFO) # 可改为 DEBUG
  20. # 防止重复添加 handler
  21. if not logger.handlers:
  22. # 控制台输出
  23. console_handler = logging.StreamHandler()
  24. console_handler.setLevel(logging.INFO)
  25. console_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT))
  26. # 文件输出(每天切割)
  27. file_handler = TimedRotatingFileHandler(
  28. LOG_FILE, when="midnight", interval=1, backupCount=7, encoding="utf-8"
  29. )
  30. file_handler.setLevel(logging.INFO)
  31. file_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT))
  32. # 添加到 logger
  33. logger.addHandler(console_handler)
  34. logger.addHandler(file_handler)
  35. # 避免重复日志
  36. logger.propagate = False