diff --git a/app/main.py b/app/main.py index bea8e60..914c9f2 100644 --- a/app/main.py +++ b/app/main.py @@ -26,6 +26,21 @@ from app.api.me import router as me_router from app.api.metrics import router as metrics_router from app.api.ws import router as ws_router +# --- Logging: App-eigene Logger sichtbar machen --------------------------- +# uvicorn konfiguriert nur seine eigenen Logger; "app.*"-INFO-Logs (z. B. die +# Notruf-Diagnose) würden sonst durch den Default-Level (WARNING) verschluckt. +import logging +import os + +_app_logger = logging.getLogger("app") +_app_logger.setLevel(getattr(logging, os.getenv("LOG_LEVEL", "INFO").upper(), logging.INFO)) +if not _app_logger.handlers: + _log_handler = logging.StreamHandler() + _log_handler.setFormatter(logging.Formatter("%(levelname)s:%(name)s:%(message)s")) + _app_logger.addHandler(_log_handler) + _app_logger.propagate = False + + @asynccontextmanager async def _lifespan(app: FastAPI): # Lokale Modelle im Hintergrund vorladen -> Server ist sofort verfuegbar, diff --git a/tests/test_logging_config.py b/tests/test_logging_config.py new file mode 100644 index 0000000..020dbf9 --- /dev/null +++ b/tests/test_logging_config.py @@ -0,0 +1,11 @@ +import logging + +import app.main # noqa: F401 — Import konfiguriert den "app"-Logger + + +def test_app_logger_visible_at_info(): + lg = logging.getLogger("app") + assert lg.level == logging.INFO # Default (LOG_LEVEL nicht gesetzt) + assert lg.handlers, "app-Logger braucht einen eigenen Handler" + # Die Notruf-Diagnose nutzt diesen Logger -> effektives Level erlaubt INFO. + assert logging.getLogger("app.safety.emergency").isEnabledFor(logging.INFO)