logging_config.py 935 B

12345678910111213141516171819202122232425262728
  1. """Logging configuration."""
  2. import logging
  3. from logging.handlers import TimedRotatingFileHandler
  4. from pathlib import Path
  5. def setup_logging(log_dir: str, retention_days: int, level: str) -> None:
  6. Path(log_dir).mkdir(parents=True, exist_ok=True)
  7. formatter = logging.Formatter("%(asctime)s %(levelname)s [%(name)s] [%(threadName)s] %(message)s")
  8. file_handler = TimedRotatingFileHandler(
  9. filename=str(Path(log_dir) / "modbus-server.log"),
  10. when="midnight",
  11. interval=1,
  12. backupCount=retention_days,
  13. encoding="utf-8",
  14. )
  15. file_handler.setFormatter(formatter)
  16. console_handler = logging.StreamHandler()
  17. console_handler.setFormatter(formatter)
  18. root_logger = logging.getLogger()
  19. root_logger.setLevel(getattr(logging, level.upper(), logging.INFO))
  20. root_logger.handlers.clear()
  21. root_logger.addHandler(file_handler)
  22. root_logger.addHandler(console_handler)