41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
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}")
|