diff --git a/src/transcription/__main__.py b/src/transcription/__main__.py index d8fe112..68fc9d6 100644 --- a/src/transcription/__main__.py +++ b/src/transcription/__main__.py @@ -9,10 +9,10 @@ def main() -> None: uvicorn.run( "transcription.app:create_app", factory=True, - host=settings.server.host, - port=settings.server.port, + host=settings.host, + port=settings.port, log_level=LOGGING_CONFIG.get("root", {}).get("level", "info").lower(), - reload=settings.server.reload, + reload=settings.reload, ) diff --git a/src/transcription/config.py b/src/transcription/config.py index b6706be..9280c68 100644 --- a/src/transcription/config.py +++ b/src/transcription/config.py @@ -9,12 +9,12 @@ import logging.config from enum import StrEnum from functools import cache from pathlib import Path +from typing import Any from typing import Literal -from pydantic import BaseModel -from pydantic import ConfigDict from pydantic import Field from pydantic_settings import BaseSettings +from pydantic_settings import CliImplicitFlag from pydantic_settings import SettingsConfigDict logger = logging.getLogger(__name__) @@ -24,15 +24,6 @@ class Provider(StrEnum): OPENROUTER = "openrouter" -class ServerSettings(BaseModel): - model_config = ConfigDict(frozen=True) - - host: str = "0.0.0.0" - port: int = 8000 - log_level: Literal["critical", "error", "warning", "info", "debug", "trace"] = "info" - reload: bool = False - - class Settings(BaseSettings): model_config = SettingsConfigDict( env_file=".env", @@ -42,7 +33,10 @@ class Settings(BaseSettings): ) # --- NiceGUI Server --- - server: ServerSettings = Field(default_factory=ServerSettings) + host: str = "0.0.0.0" + port: int = 8000 + log_level: Literal["critical", "error", "warning", "info", "debug", "trace"] = "info" + reload: CliImplicitFlag[bool] = False # --- AI provider --- provider: Provider = Provider.OPENROUTER @@ -84,7 +78,7 @@ def get_settings(**kwargs) -> Settings: return Settings(**kwargs) -LOGGING_CONFIG: dict[str, object] = { +LOGGING_CONFIG: dict[str, Any] = { "version": 1, "disable_existing_loggers": False, "formatters": { @@ -114,7 +108,10 @@ LOGGING_CONFIG: dict[str, object] = { } -def configure_logging() -> None: +def configure_logging(settings: Settings | None = None) -> None: """Configure root logging once at startup.""" - logging.config.dictConfig(LOGGING_CONFIG) + cfg = LOGGING_CONFIG.copy() + active_settings = settings or get_settings() + cfg["loggers"]["transcription"]["level"] = active_settings.log_level.upper() + logging.config.dictConfig(cfg) logger.debug("Logging configured")