ytptube/app/library/log_control.py
2026-05-28 21:26:23 +03:00

33 lines
953 B
Python

from __future__ import annotations
import logging
from app.library.log import get_logger, get_logger_name
SUPPORTED_LOG_LEVELS: tuple[str, ...] = ("debug", "info", "warning", "error")
def normalize_log_level(level: str) -> str:
value: str = level.strip().lower()
if value not in SUPPORTED_LOG_LEVELS:
msg: str = f"Unsupported log level '{level}'."
raise ValueError(msg)
return value
def get_runtime_log_level() -> str:
return logging.getLevelName(logging.getLogger(get_logger_name()).getEffectiveLevel()).lower()
def set_runtime_log_level(level: str) -> str:
normalized: str = normalize_log_level(level)
numeric_level: int | None = getattr(logging, normalized.upper(), None)
if not isinstance(numeric_level, int):
msg: str = f"Unsupported log level '{level}'."
raise ValueError(msg)
for _logger in (get_logger(),):
_logger.setLevel(numeric_level)
return normalized