@@ -14,7 +14,7 @@ use tower_http::compression::CompressionLayer;
14
14
use tower_http:: cors:: CorsLayer ;
15
15
use tower_http:: propagate_header:: PropagateHeaderLayer ;
16
16
use tower_http:: request_id:: { MakeRequestId , RequestId , SetRequestIdLayer } ;
17
- use tower_http:: trace:: { DefaultMakeSpan , DefaultOnRequest , TraceLayer } ;
17
+ use tower_http:: trace:: { DefaultMakeSpan , TraceLayer } ;
18
18
use tracing:: { Level , Span } ;
19
19
use uuid:: Uuid ;
20
20
@@ -62,7 +62,19 @@ pub fn router(app_data: Arc<AppData>) -> Router {
62
62
. layer (
63
63
TraceLayer :: new_for_http ( )
64
64
. make_span_with ( DefaultMakeSpan :: new ( ) . level ( Level :: INFO ) )
65
- . on_request ( DefaultOnRequest :: new ( ) . level ( Level :: INFO ) )
65
+ . on_request ( |request : & Request < axum:: body:: Body > , _span : & Span | {
66
+ let method = request. method ( ) . to_string ( ) ;
67
+ let uri = request. uri ( ) . to_string ( ) ;
68
+ let request_id = request
69
+ . headers ( )
70
+ . get ( "x-request-id" )
71
+ . map ( |v| v. to_str ( ) . unwrap_or_default ( ) )
72
+ . unwrap_or_default ( ) ;
73
+
74
+ tracing:: span!(
75
+ target: "API" ,
76
+ tracing:: Level :: INFO , "request" , method = %method, uri = %uri, request_id = %request_id) ;
77
+ } )
66
78
. on_response ( |response : & Response , latency : Duration , _span : & Span | {
67
79
let status_code = response. status ( ) ;
68
80
let request_id = response
@@ -74,7 +86,7 @@ pub fn router(app_data: Arc<AppData>) -> Router {
74
86
75
87
tracing:: span!(
76
88
target: "API" ,
77
- tracing:: Level :: INFO , "finished processing request " , latency = %latency_ms, status = %status_code, request_id = %request_id) ;
89
+ tracing:: Level :: INFO , "response " , latency = %latency_ms, status = %status_code, request_id = %request_id) ;
78
90
} ) ,
79
91
)
80
92
}
0 commit comments