use axum::{extract::Request, middleware::Next, response::Response};
use mz_ore::instrument;
use std::time::Instant;
#[instrument]
pub async fn logging_middleware(request: Request, next: Next) -> Response {
let start: Instant = Instant::now();
let method: hyper::Method = request.method().clone();
let uri = request.uri().clone();
let response = next.run(request).await;
let latency = start.elapsed();
let status = response.status();
tracing::info!(
method = %method,
uri = %uri,
status = %status,
latency = ?latency,
"Request completed"
);
response
}