import logging from typing import Optional class LogManager: """ Управляет конфигурацией логирования приложения. Применяет конфигурацию из словаря с обработкой ошибок. """ def __init__(self): self.logger = logging.getLogger(__name__) self._last_valid_config: Optional[dict] = None def apply_config(self, config: dict) -> None: """ Применяет конфигурацию логирования из словаря. При ошибке восстанавливает последний валидный конфиг. Args: config: Словарь с настройками логирования (из файла конфига) """ logging_config = config.get("log") if not logging_config: return try: logging.config.dictConfig(logging_config) self._last_valid_config = logging_config self.logger.info("Logging configuration applied") except Exception as e: self.logger.error(f"Error applying logging config: {e}") # Если был предыдущий валидный конфиг, восстанавливаем его if self._last_valid_config: try: logging.config.dictConfig(self._last_valid_config) self.logger.info("Previous logging configuration restored") except Exception as restore_error: self.logger.error(f"Error restoring previous config: {restore_error}")