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}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn test_trace_layer_creation() {
30        let _layer = trace_layer();
31        // Basic test to ensure layer can be created
32    }
33}