fix: App-Logger sichtbar machen (Notruf-Diagnose im Log)
uvicorn konfiguriert nur seine eigenen Logger -> app.*-INFO-Logs (u. a. die Notruf-Diagnosezeile geo/geo_error/device) wurden durch den Default-Level (WARNING) verschluckt. main.py setzt jetzt den "app"-Logger auf LOG_LEVEL (Default INFO) mit eigenem Handler (propagate=False, kein Doppel-Log). Verifiziert: "INFO:app.safety.emergency:Notruf von … geo=… device=…" erscheint. +1 Test, Suite 251 grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
2c2231b684
commit
634698b027
2 changed files with 26 additions and 0 deletions
15
app/main.py
15
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,
|
||||
|
|
|
|||
11
tests/test_logging_config.py
Normal file
11
tests/test_logging_config.py
Normal file
|
|
@ -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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue