fraiseql_server/middleware/trace.rs
1//! Request tracing middleware.
2
3use tower_http::trace::{DefaultMakeSpan, DefaultOnResponse, TraceLayer};
4use tracing::Level;
5
6/// Create tracing layer.
7///
8/// Adds request/response tracing for observability.
9///
10/// # Features
11///
12/// - Logs incoming requests
13/// - Logs response status and latency
14/// - Adds trace IDs for request correlation
15#[must_use]
16pub fn trace_layer()
17-> TraceLayer<tower_http::classify::SharedClassifier<tower_http::classify::ServerErrorsAsFailures>>
18{
19 TraceLayer::new_for_http()
20 .make_span_with(DefaultMakeSpan::new().level(Level::INFO))
21 .on_response(DefaultOnResponse::new().level(Level::INFO))
22}