From 2a45cb2622d49e88f8e5565ebe8de96e38a63e38 Mon Sep 17 00:00:00 2001 From: Robert Helewka Date: Sat, 16 May 2026 18:19:58 -0400 Subject: [PATCH] chore: add /mcp/health filter and configure uvicorn.access logging Add /mcp/health to suppress paths in log_filters.py to demote health probe logs to DEBUG level. Configure uvicorn.access logger in settings.py to manage access logs directly instead of relying on mcp_server internal filters. Update comments to reflect that uvicorn access is now managed in project settings. --- mnemosyne/mnemosyne/log_filters.py | 1 + mnemosyne/mnemosyne/settings.py | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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},