public static void onExit()

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);
      }
    }