in instrumentation/logback-1.0/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/logback_1_0/AwsXrayLoggingEventInstrumentation.java [64:93]
public static void onExit(
@Advice.This ILoggingEvent event,
@Advice.Return(typing = Typing.DYNAMIC, readOnly = false) Map<String, String> contextData) {
if (contextData != null && contextData.containsKey(TRACE_ID_KEY)) {
// Assume already instrumented event if traceId is present.
return;
}
Span currentSpan = VirtualField.find(ILoggingEvent.class, Span.class).get(event);
if (currentSpan == null || !currentSpan.getSpanContext().isValid()) {
return;
}
SpanContext spanContext = currentSpan.getSpanContext();
String value =
"1-"
+ spanContext.getTraceId().substring(0, 8)
+ "-"
+ spanContext.getTraceId().substring(8)
+ "@"
+ spanContext.getSpanId();
Map<String, String> spanContextData = Collections.singletonMap(TRACE_ID_KEY, value);
if (contextData == null) {
contextData = spanContextData;
} else {
contextData = new UnionMap<>(contextData, spanContextData);
}
}