karbon_framework/http/middleware/
request_logger.rs1use axum::{extract::Request, middleware::Next, response::Response};
2use std::time::Instant;
3
4pub async fn request_logger(request: Request, next: Next) -> Response {
6 let method = request.method().clone();
7 let uri = request.uri().path().to_string();
8 let start = Instant::now();
9
10 let response = next.run(request).await;
11
12 let duration = start.elapsed();
13 let status = response.status();
14
15 tracing::info!(
16 method = %method,
17 path = %uri,
18 status = %status.as_u16(),
19 duration_ms = %duration.as_millis(),
20 "Request"
21 );
22
23 response
24}