Skip to main content

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}