style: format api server tracing layer
This commit is contained in:
@@ -693,39 +693,47 @@ pub fn build_router(state: AppState) -> Router {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
.on_request(DefaultOnRequest::new().level(Level::INFO))
|
.on_request(DefaultOnRequest::new().level(Level::INFO))
|
||||||
.on_response(move |response: &axum::response::Response, latency: std::time::Duration, span: &Span| {
|
.on_response(
|
||||||
let latency_ms = latency.as_millis().min(u64::MAX as u128) as u64;
|
move |response: &axum::response::Response,
|
||||||
let status = response.status().as_u16();
|
latency: std::time::Duration,
|
||||||
let slow_request = latency_ms >= slow_request_threshold_ms;
|
span: &Span| {
|
||||||
span.record("status", status);
|
let latency_ms = latency.as_millis().min(u64::MAX as u128) as u64;
|
||||||
span.record("latency_ms", latency_ms);
|
let status = response.status().as_u16();
|
||||||
if slow_request {
|
let slow_request = latency_ms >= slow_request_threshold_ms;
|
||||||
warn!(
|
span.record("status", status);
|
||||||
|
span.record("latency_ms", latency_ms);
|
||||||
|
if slow_request {
|
||||||
|
warn!(
|
||||||
|
parent: span,
|
||||||
|
status,
|
||||||
|
latency_ms,
|
||||||
|
slow_request = true,
|
||||||
|
"http request completed slowly"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
info!(
|
||||||
|
parent: span,
|
||||||
|
status,
|
||||||
|
latency_ms,
|
||||||
|
slow_request = false,
|
||||||
|
"http request completed"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.on_failure(
|
||||||
|
|failure: ServerErrorsFailureClass,
|
||||||
|
latency: std::time::Duration,
|
||||||
|
span: &Span| {
|
||||||
|
let latency_ms = latency.as_millis().min(u64::MAX as u128) as u64;
|
||||||
|
error!(
|
||||||
parent: span,
|
parent: span,
|
||||||
status,
|
|
||||||
latency_ms,
|
latency_ms,
|
||||||
slow_request = true,
|
failure = %failure,
|
||||||
"http request completed slowly"
|
"http request failed"
|
||||||
);
|
);
|
||||||
} else {
|
},
|
||||||
info!(
|
),
|
||||||
parent: span,
|
|
||||||
status,
|
|
||||||
latency_ms,
|
|
||||||
slow_request = false,
|
|
||||||
"http request completed"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on_failure(|failure: ServerErrorsFailureClass, latency: std::time::Duration, span: &Span| {
|
|
||||||
let latency_ms = latency.as_millis().min(u64::MAX as u128) as u64;
|
|
||||||
error!(
|
|
||||||
parent: span,
|
|
||||||
latency_ms,
|
|
||||||
failure = %failure,
|
|
||||||
"http request failed"
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
)
|
)
|
||||||
// request_id 中间件先进入请求链,确保后续 tracing、错误处理和响应头层都能复用同一份请求标识。
|
// request_id 中间件先进入请求链,确保后续 tracing、错误处理和响应头层都能复用同一份请求标识。
|
||||||
.layer(middleware::from_fn(attach_request_context))
|
.layer(middleware::from_fn(attach_request_context))
|
||||||
|
|||||||
Reference in New Issue
Block a user