fix: suppress Uvicorn WebSocket rejection noise in logs
Unknown-path WS probes (e.g. /waapi) generate three INFO lines from uvicorn.access + uvicorn.error on every attempt. Install a logging.Filter on both loggers at startup to drop: - access log entries: "WebSocket <path>" 403 - error log entries: "connection rejected ..." / "connection closed" These are handled gracefully by _SPAStaticFiles; the logs add no value. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
25
bot.py
25
bot.py
@@ -40,6 +40,26 @@ except Exception:
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class _UvicornWSNoiseFilter(logging.Filter):
|
||||
"""Suppress per-connection WebSocket rejection noise from Uvicorn.
|
||||
|
||||
When an unknown path (e.g. /waapi probes) hits the server as a WebSocket
|
||||
upgrade, Uvicorn logs three lines at INFO:
|
||||
- uvicorn.access: '... "WebSocket /waapi" 403'
|
||||
- uvicorn.error: 'connection rejected (403 Forbidden)'
|
||||
- uvicorn.error: 'connection closed'
|
||||
These are expected and handled gracefully; we just don't want them filling
|
||||
the log.
|
||||
"""
|
||||
def filter(self, record: logging.LogRecord) -> bool:
|
||||
msg = record.getMessage()
|
||||
if '"WebSocket ' in msg and ' 403' in msg:
|
||||
return False
|
||||
if msg.startswith("connection rejected") or msg == "connection closed":
|
||||
return False
|
||||
return True
|
||||
|
||||
_PROJECT_ROOT = Path(__file__).resolve().parent
|
||||
|
||||
|
||||
@@ -192,6 +212,11 @@ async def main() -> None:
|
||||
loop="none", # use existing event loop
|
||||
)
|
||||
uvi_server = uvicorn.Server(uvi_config)
|
||||
|
||||
_ws_filter = _UvicornWSNoiseFilter()
|
||||
logging.getLogger("uvicorn.access").addFilter(_ws_filter)
|
||||
logging.getLogger("uvicorn.error").addFilter(_ws_filter)
|
||||
|
||||
coroutines.append(uvi_server.serve())
|
||||
logger.info(
|
||||
"Web UI enabled at http://%s:%d", config.web_host, config.web_port
|
||||
|
||||
Reference in New Issue
Block a user