Spring Cloud Sleuth - получить текущий traceId?

Я использую Sleuth, и мне интересно, можно ли получить текущий traceId? Мне не нужно добавлять какие-либо ответы или что-то еще. Мне просто нужен traceId для электронных писем, предупреждающих команду разработчиков в определенных ситуациях.


person Daniel Haughton    schedule 09.08.2019    source источник


Ответы (2)


Вставьте bean-компонент трассировки и вызовите currentSpan (), чтобы получить текущий диапазон. Оттуда вы можете получить идентификатор трассировки.

person Marcin Grzejszczak    schedule 09.08.2019

Если текущая трассировка не выполняется, tracer.currentSpan() вернет null и, следовательно, tracer.currentSpan().context() выдаст NPE. Если вы не уверены, есть ли текущая трасса, и хотите создать ее, если ее нет, вам следует использовать

var span = tracer.startScopedSpan("fancyTitle");
try {
    var traceId = span.context().traceIdString();
    // use traceId ...
} finally {
    span.finish(); // clean up after yourself
}

Обратите внимание, что это создаст новый диапазон в существующей трассе, т.е. всегда будет генерировать новый spanId.

person Yasammez    schedule 14.04.2021