Skip to main content

unleash_edge_request_logger/
lib.rs

1use axum::extract::Request;
2use axum::middleware::Next;
3use axum::response::Response;
4use http::{HeaderValue, header};
5use tracing::trace;
6
7pub async fn log_request_middleware(req: Request, next: Next) -> Response {
8    let uri = req.uri().clone();
9    let mut headers = req.headers().clone();
10    let method = req.method().clone();
11    headers.insert(
12        header::AUTHORIZATION,
13        headers
14            .get(header::AUTHORIZATION)
15            .map(|f| {
16                if f.is_empty() {
17                    HeaderValue::from_str("AuthorizationEmpty").unwrap()
18                } else {
19                    HeaderValue::from_str("***redacted***").unwrap()
20                }
21            })
22            .unwrap_or_else(|| HeaderValue::from_str("No authorization header").unwrap()),
23    );
24    trace!(
25        "Request: uri=[{}], method=[{}], headers=[{:?}]",
26        uri, method, headers
27    );
28    next.run(req).await
29}