diff --git a/mnemosyne/mnemosyne/log_filters.py b/mnemosyne/mnemosyne/log_filters.py index 16db05a..8c14dc7 100644 --- a/mnemosyne/mnemosyne/log_filters.py +++ b/mnemosyne/mnemosyne/log_filters.py @@ -20,6 +20,7 @@ _SUPPRESS_PATHS = frozenset( "/ready", "/healthz", "/metrics", + "/mcp/health", } ) diff --git a/mnemosyne/mnemosyne/settings.py b/mnemosyne/mnemosyne/settings.py index 64b862d..cb43736 100644 --- a/mnemosyne/mnemosyne/settings.py +++ b/mnemosyne/mnemosyne/settings.py @@ -389,8 +389,7 @@ LOGGING = { "filters": { # Demotes successful health-probe access log lines from INFO to # DEBUG so production INFO output stays signal-only. Applied to - # django.server and gunicorn.access; uvicorn does its own thing - # via the structlog-style filter in mcp_server. + # django.server, gunicorn.access, and uvicorn.access. "suppress_health_access": { "()": "mnemosyne.log_filters.SuppressHealthAccessFilter", }, @@ -458,6 +457,11 @@ LOGGING = { "level": DJANGO_LOGGING_LEVEL, "propagate": False, }, + "uvicorn.access": { + "handlers": ["access"], + "level": LOGGING_LEVEL, + "propagate": False, + }, # Noisy library internals — pin to WARNING regardless of root level # so we don't drown in HTTP-client debug spam when LOGGING_LEVEL=DEBUG. "httpx": {"handlers": ["console"], "level": "WARNING", "propagate": False},