FastAPI is the only supported framework whose logging instrument binds nothing framework-specific.
fastapi_bootstrapper.py:183 lists the base LoggingInstrument in instruments_types. Every other framework ships a subclass that binds its own logger:
LitestarLoggingInstrument (litestar_bootstrapper.py:197)
FastStreamLoggingInstrument (faststream_bootstrapper.py:120)
FastMcpLoggingInstrument (fastmcp_bootstrapper.py:126)
So a FastAPI service gets structlog configured process-wide and no structured access log, while a Litestar service gets both. That is an empty cell in the instrument x framework matrix, not a missing instrument — it fits the per-instrument axis ADR-0002 keeps, as one more subclass.
Constraint on the implementation
Whatever binds the access log must not log request or response bodies by default. That was a real defect on the Litestar side, fixed in 54c8ad9 (fix(litestar): stop logging request and response bodies by default), with a follow-up in cfb7650. A FastAPI access log that reintroduces body logging would be the same bug in a new cell.
Verification
The invariant worth pinning is that the access log excludes bodies, named as the claim per the AGENTS.md INVARIANT: convention — the shape of the log line itself is behaviour, and belongs in the test, not in prose.
FastAPI is the only supported framework whose logging instrument binds nothing framework-specific.
fastapi_bootstrapper.py:183lists the baseLoggingInstrumentininstruments_types. Every other framework ships a subclass that binds its own logger:LitestarLoggingInstrument(litestar_bootstrapper.py:197)FastStreamLoggingInstrument(faststream_bootstrapper.py:120)FastMcpLoggingInstrument(fastmcp_bootstrapper.py:126)So a FastAPI service gets structlog configured process-wide and no structured access log, while a Litestar service gets both. That is an empty cell in the instrument x framework matrix, not a missing instrument — it fits the per-instrument axis ADR-0002 keeps, as one more subclass.
Constraint on the implementation
Whatever binds the access log must not log request or response bodies by default. That was a real defect on the Litestar side, fixed in 54c8ad9 (
fix(litestar): stop logging request and response bodies by default), with a follow-up in cfb7650. A FastAPI access log that reintroduces body logging would be the same bug in a new cell.Verification
The invariant worth pinning is that the access log excludes bodies, named as the claim per the AGENTS.md
INVARIANT:convention — the shape of the log line itself is behaviour, and belongs in the test, not in prose.