openserve 2.0.3

A modern, high-performance, AI-enhanced file server built in Rust
Documentation
//! Logging middleware for HTTP requests.

use axum::{
    extract::Request,
    middleware::Next,
    response::Response,
};
use tracing::{info, span, Level};
use std::time::Instant;

/// Logging middleware function that logs HTTP request details
pub async fn logging_middleware(
    request: Request,
    next: Next,
) -> Response {
    let method = request.method().clone();
    let uri = request.uri().clone();
    let start = Instant::now();
    
    let span = span!(Level::INFO, "http_request", method = %method, uri = %uri);
    let _enter = span.enter();

    let response = next.run(request).await;
    
    let duration = start.elapsed();
    let status = response.status();
    
    info!(
        duration_ms = duration.as_millis(),
        status = status.as_u16(),
        "Request completed"
    );

    response
}