#rust #rust-tokio #hyper
Вопрос:
Есть ли способ привязать переменную к запросу Axum?
В частности, я пытаюсь добавить идентификатор запроса к каждому событию трассировки. Я могу сделать это с помощью промежуточного программного обеспечения tower::трассировки, подобного этому:
#[derive(Clone)]
pub struct RequestSpan;
impl<B> tower_http::trace::MakeSpan<B> for RequestSpan {
fn make_span(amp;mut self, request: amp;http::Request<B>) -> tracing::Span {
tracing::error_span!(
"rq",
id = %ulid::Ulid::new().to_string(),
method = %request.method(),
uri = %request.uri(),
version = ?request.version(),
)
}
}
...
let middleware_stack = tower::ServiceBuilder::new()
.layer(TraceLayer::new_for_http().make_span_with(RequestSpan))
Это работает в рамках сервера, но мне также нужно передать идентификатор запроса во внешнюю очередь задач. Есть какие-нибудь предложения?
Ответ №1:
Я превратил его в маленький ящик, следуя решению с форума rustlang