Spring boot Spring Cloud Sleuth-获取当前traceId?
我正在使用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
我不需要添加任何响应或任何内容。在某些情况下,我只需要用于提醒开发团队的电子邮件的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