From 9dcb079aa6c386b24d017b87abd786ac0df06f40 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Mon, 22 Jun 2020 01:13:36 -0700 Subject: [PATCH] Fix duplicate log capture, part 2 (#554) --- .../jul/JavaUtilLoggingSpansInstrumentation.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/instrumentation/java-util-logging/src/main/java/io/opentelemetry/auto/instrumentation/jul/JavaUtilLoggingSpansInstrumentation.java b/instrumentation/java-util-logging/src/main/java/io/opentelemetry/auto/instrumentation/jul/JavaUtilLoggingSpansInstrumentation.java index 99652d2d74..a273c739c4 100644 --- a/instrumentation/java-util-logging/src/main/java/io/opentelemetry/auto/instrumentation/jul/JavaUtilLoggingSpansInstrumentation.java +++ b/instrumentation/java-util-logging/src/main/java/io/opentelemetry/auto/instrumentation/jul/JavaUtilLoggingSpansInstrumentation.java @@ -24,6 +24,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; import io.opentelemetry.auto.bootstrap.CallDepthThreadLocalMap; +import io.opentelemetry.auto.bootstrap.instrumentation.logging.LoggerDepth; import io.opentelemetry.auto.tooling.Instrumenter; import java.util.HashMap; import java.util.Map; @@ -80,7 +81,7 @@ public class JavaUtilLoggingSpansInstrumentation extends Instrumenter.Default { @Advice.This final Logger logger, @Advice.Argument(0) final LogRecord logRecord) { // need to track call depth across all loggers in order to avoid double capture when one // logging framework delegates to another - final boolean topLevel = CallDepthThreadLocalMap.incrementCallDepth(Logger.class) == 0; + final boolean topLevel = CallDepthThreadLocalMap.incrementCallDepth(LoggerDepth.class) == 0; if (topLevel) { JavaUtilLoggingSpans.capture(logger, logRecord); } @@ -90,7 +91,7 @@ public class JavaUtilLoggingSpansInstrumentation extends Instrumenter.Default { @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void methodExit(@Advice.Enter final boolean topLevel) { if (topLevel) { - CallDepthThreadLocalMap.reset(Logger.class); + CallDepthThreadLocalMap.reset(LoggerDepth.class); } } }