"""Logging configuration.""" import logging from logging.handlers import TimedRotatingFileHandler from pathlib import Path def setup_logging(log_dir: str, retention_days: int, level: str) -> None: Path(log_dir).mkdir(parents=True, exist_ok=True) formatter = logging.Formatter("%(asctime)s %(levelname)s [%(name)s] [%(threadName)s] %(message)s") file_handler = TimedRotatingFileHandler( filename=str(Path(log_dir) / "modbus-server.log"), when="midnight", interval=1, backupCount=retention_days, encoding="utf-8", ) file_handler.setFormatter(formatter) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) root_logger = logging.getLogger() root_logger.setLevel(getattr(logging, level.upper(), logging.INFO)) root_logger.handlers.clear() root_logger.addHandler(file_handler) root_logger.addHandler(console_handler)