Skip to main content

karbon_framework/http/middleware/
request_logger.rs

1use axum::{extract::Request, middleware::Next, response::Response};
2use std::time::Instant;
3
4/// Request logging middleware — logs method, path, status, and duration
5pub 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}