server_middleware/middleware/
log.rs1#![allow(unused_variables)] #![allow(dead_code)] #![allow(unused_must_use)]
4
5use axum::extract::Request;
6use axum::middleware::Next;
7use axum::response::Response;
8use std::time::Instant;
9use tracing::info;
10
11pub async fn logging_middleware(request: Request, next: Next) -> Response {
14 let method = request.method().clone();
16 let path = request.uri().path().to_owned();
18 let start = Instant::now();
20 info!("→→→ {} {} started", method, path);
22
23 let response = next.run(request).await;
24
25 let duration = start.elapsed();
26 info!(
28 "←←← {} {} completed in {}ms (status: {})",
29 method,
30 path,
31 duration.as_millis(),
32 response.status()
33 );
34
35 response
36}