Spring boot Spring Cloud Sleuth-获取当前traceId?

Spring boot Spring Cloud Sleuth-获取当前traceId?,spring-boot,spring-cloud-sleuth,Spring Boot,Spring Cloud Sleuth,我正在使用Sleuth,我想知道是否有可能获得当前的traceId? 我不需要添加任何响应或任何内容。在某些情况下,我只需要用于提醒开发团队的电子邮件的traceId。注入跟踪bean并调用currentSpan()以获取当前span。从那里您可以获得跟踪id。Ex import brave.Span; import brave.Tracer; @Service public class TraceService { Tracer tracer; public TraceS

我正在使用Sleuth,我想知道是否有可能获得当前的traceId?
我不需要添加任何响应或任何内容。在某些情况下,我只需要用于提醒开发团队的电子邮件的traceId。

注入跟踪bean并调用currentSpan()以获取当前span。从那里您可以获得跟踪id。

Ex

import brave.Span;
import brave.Tracer;

@Service
public class TraceService {

    Tracer tracer;

    public TraceService(Tracer tracer) {
        this.tracer = tracer;
    }

    public void printTraceId() {
        Span span = tracer.currentSpan();
        String traceId = span.context().traceIdString();
        System.out.println(traceId);
    }

}

如果没有正在进行的当前跟踪,
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
}
请注意,这将在现有跟踪中创建一个新的span,即始终生成一个新的
spanId