the reason i'm doing this is because i want to return the request id in the json response when there is an error. so the users can raise a support ticket with that request id.
{
"datetime": "2024-10-14T13:54:14.348240919Z",
"error": "...",
"request_id": "4af4d2bb-283e-4c83-85a3-c916621b3e03"
}
i also setup tracing span to show that request id in the logs
.layer(
TraceLayer::new_for_http().make_span_with(|request: &Request<_>| {
let request_id = request
.extensions()
.get::<RequestId>()
.cloned()
.unwrap_or_else(|| {
tracing::warn!("unable to get RequestId extension when making span");
RequestId::unknown()
});
tracing::info_span!(
"request",
request_id = %request_id,
method = %request.method(),
uri = %request.uri(),
)
}),
)
2024-10-14T13:54:11.000543Z INFO request{request_id=4395866c-ea1b-4e0c-ab5c-fbc99924db4e method=POST uri=/login}:login{username="zahash" remember=true}: server::login: user_id=1
2024-10-14T13:54:11.604185Z INFO request{request_id=4395866c-ea1b-4e0c-ab5c-fbc99924db4e method=POST uri=/login}:login{username="zahash" remember=true}: server::login: session created session_id="***" created_at=2024-10-14 13:54:11.596599469 +00:00:00 expires_at=2024-11-13 13:54:11.596599469 +00:00:00 user_agent=Thunder Client (https://www.thunderclient.com)
2024-10-14T13:54:14.348198Z INFO request{request_id=4af4d2bb-283e-4c83-85a3-c916621b3e03 method=POST uri=/login}: server::error: Auth(UserNotFound("asdf"))