aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-middleware/src/trace_layer.rs
blob: 5173e8dc47e454f2c80deed9e6767b35f14a3fc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use axum::{Router, http::Request};
use tower_http::trace::TraceLayer;
use tracing::info_span;

use super::REQUEST_ID_HEADER;

pub fn apply_trace_context_middleware<T: Clone + Send + Sync + 'static>(
    router: Router<T>,
) -> Router<T> {
    router.layer(
        TraceLayer::new_for_http().make_span_with(|request: &Request<_>| {
            let request_id = request
                .headers()
                .get(REQUEST_ID_HEADER)
                .expect("should have been applied already");

            info_span!(
                "http_request",
                request_id = ?request_id,
                headers = ?request.headers()
            )
        }),
    )
}