diff --git a/buildscripts/checkstyle.xml b/buildscripts/checkstyle.xml index c6716dabf5af..bf211f92eb32 100644 --- a/buildscripts/checkstyle.xml +++ b/buildscripts/checkstyle.xml @@ -172,7 +172,7 @@ diff --git a/instrumentation/log4j/log4j-2-common/testing/src/main/groovy/Log4j2Test.groovy b/instrumentation/log4j/log4j-2-common/testing/src/main/groovy/Log4j2Test.groovy index c898ee76df98..173056de3566 100644 --- a/instrumentation/log4j/log4j-2-common/testing/src/main/groovy/Log4j2Test.groovy +++ b/instrumentation/log4j/log4j-2-common/testing/src/main/groovy/Log4j2Test.groovy @@ -4,7 +4,7 @@ */ import io.opentelemetry.api.trace.Span -import io.opentelemetry.instrumentation.log4j.v2_13_2.ListAppender +import io.opentelemetry.instrumentation.log4j.v2_16.ListAppender import io.opentelemetry.instrumentation.test.InstrumentationSpecification import org.apache.logging.log4j.LogManager diff --git a/instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java b/instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/ListAppender.java similarity index 97% rename from instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java rename to instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/ListAppender.java index c9175487592b..32197cf49185 100644 --- a/instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java +++ b/instrumentation/log4j/log4j-2-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/ListAppender.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import java.util.ArrayList; import java.util.Collections; diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java b/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java deleted file mode 100644 index e96a23974596..000000000000 --- a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.log4j.v2_13_2; - -import static net.bytebuddy.matcher.ElementMatchers.isMethod; -import static net.bytebuddy.matcher.ElementMatchers.isPublic; -import static net.bytebuddy.matcher.ElementMatchers.named; -import static net.bytebuddy.matcher.ElementMatchers.takesArgument; - -import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; -import java.util.Collections; -import java.util.List; -import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.type.TypeDescription; -import net.bytebuddy.matcher.ElementMatcher; -import org.apache.logging.log4j.core.config.Property; - -// Log4 J 2.13.2 has a critical bug that prevents using ContextDataProvider with many log4j.xml -// configurations. We introduce a patch which should be low enough overhead to keep on higher -// versions too. -// -// https://github.com/apache/logging-log4j2/commit/e5394028c000008505991c45b8ce593422f7ac55 -public class BugFixingInstrumentation implements TypeInstrumentation { - @Override - public ElementMatcher typeMatcher() { - return named( - "org.apache.logging.log4j.core.impl.ThreadContextDataInjector$ForCopyOnWriteThreadContextMap"); - } - - @Override - public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isMethod() - .and(isPublic()) - .and(named("injectContextData")) - .and(takesArgument(0, List.class)), - BugFixingInstrumentation.class.getName() + "$BugFixingAdvice"); - } - - @SuppressWarnings("unused") - public static class BugFixingAdvice { - - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter(@Advice.Argument(value = 0, readOnly = false) List props) { - if (props == null) { - props = Collections.emptyList(); - } - } - } -} diff --git a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/build.gradle.kts b/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/build.gradle.kts deleted file mode 100644 index 207b68b9a79b..000000000000 --- a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id("otel.library-instrumentation") -} - -dependencies { - library("org.apache.logging.log4j:log4j-core:2.13.2") - - // Library instrumentation cannot be applied to 2.13.2 due to a bug in Log4J. The agent works - // around it. - testLibrary("org.apache.logging.log4j:log4j-core:2.13.3") - - testImplementation(project(":instrumentation:log4j:log4j-2-common:testing")) -} diff --git a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider b/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider deleted file mode 100644 index e4eb8009d0b4..000000000000 --- a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider +++ /dev/null @@ -1 +0,0 @@ -io.opentelemetry.instrumentation.log4j.v2_13_2.OpenTelemetryContextDataProvider diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/test/resources/log4j2-test.xml b/instrumentation/log4j/log4j-2.13.2/library/src/test/resources/log4j2-test.xml deleted file mode 100644 index 9713053a6f7a..000000000000 --- a/instrumentation/log4j/log4j-2.13.2/library/src/test/resources/log4j2-test.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/build.gradle.kts b/instrumentation/log4j/log4j-2.16/javaagent/build.gradle.kts similarity index 85% rename from instrumentation/log4j/log4j-2.13.2/javaagent/build.gradle.kts rename to instrumentation/log4j/log4j-2.16/javaagent/build.gradle.kts index d8b573a89f7c..adeb55218012 100644 --- a/instrumentation/log4j/log4j-2.13.2/javaagent/build.gradle.kts +++ b/instrumentation/log4j/log4j-2.16/javaagent/build.gradle.kts @@ -7,7 +7,7 @@ muzzle { pass { group.set("org.apache.logging.log4j") module.set("log4j-core") - versions.set("[2.13.2,)") + versions.set("[2.16.0,)") assertInverse.set(true) } } @@ -21,9 +21,9 @@ testSets { } dependencies { - library("org.apache.logging.log4j:log4j-core:2.13.2") + library("org.apache.logging.log4j:log4j-core:2.16.0") - implementation(project(":instrumentation:log4j:log4j-2.13.2:library-autoconfigure")) + implementation(project(":instrumentation:log4j:log4j-2.16:library-autoconfigure")) testImplementation(project(":instrumentation:log4j:log4j-2-common:testing")) } diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java b/instrumentation/log4j/log4j-2.16/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_16/Log4j2InstrumentationModule.java similarity index 75% rename from instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java rename to instrumentation/log4j/log4j-2.16/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_16/Log4j2InstrumentationModule.java index e33a127a7768..db4975f5e4a0 100644 --- a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java +++ b/instrumentation/log4j/log4j-2.16/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_16/Log4j2InstrumentationModule.java @@ -3,17 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.log4j.v2_13_2; +package io.opentelemetry.javaagent.instrumentation.log4j.v2_16; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Collections.singletonList; import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.not; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.HelperResourceBuilder; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; -import java.util.Arrays; import java.util.List; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -21,7 +22,7 @@ @AutoService(InstrumentationModule.class) public class Log4j2InstrumentationModule extends InstrumentationModule { public Log4j2InstrumentationModule() { - super("log4j", "log4j-2.13.2"); + super("log4j", "log4j-2.16"); } @Override @@ -32,13 +33,19 @@ public void registerHelperResources(HelperResourceBuilder helperResourceBuilder) @Override public ElementMatcher.Junction classLoaderMatcher() { - return hasClassesNamed("org.apache.logging.log4j.core.util.ContextDataProvider"); + // want to cover 2.16.0+ + // - DefaultArbiter introduced in 2.15.0 + // - LookupMessagePatternConverter introduced in 2.15.0, removed in 2.16.0 + return hasClassesNamed("org.apache.logging.log4j.core.config.arbiters.DefaultArbiter") + .and( + not( + hasClassesNamed( + "org.apache.logging.log4j.core.pattern.MessagePatternConverter$LookupMessagePatternConverter"))); } @Override public List typeInstrumentations() { - return Arrays.asList( - new BugFixingInstrumentation(), new ResourceInjectingTypeInstrumentation()); + return singletonList(new ResourceInjectingTypeInstrumentation()); } // A type instrumentation is needed to trigger resource injection. diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/src/test/groovy/AutoLog4j2Test.groovy b/instrumentation/log4j/log4j-2.16/javaagent/src/test/groovy/AutoLog4j2Test.groovy similarity index 100% rename from instrumentation/log4j/log4j-2.13.2/javaagent/src/test/groovy/AutoLog4j2Test.groovy rename to instrumentation/log4j/log4j-2.16/javaagent/src/test/groovy/AutoLog4j2Test.groovy diff --git a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/README.md b/instrumentation/log4j/log4j-2.16/library-autoconfigure/README.md similarity index 83% rename from instrumentation/log4j/log4j-2.13.2/library-autoconfigure/README.md rename to instrumentation/log4j/log4j-2.16/library-autoconfigure/README.md index 09c6d78d1c1b..968ef07e5140 100644 --- a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/README.md +++ b/instrumentation/log4j/log4j-2.16/library-autoconfigure/README.md @@ -66,23 +66,28 @@ You can use these keys when defining an appender in your `log4j.xml` configurati ## OpenTelemetry Appender -`OpenTelemetryAppender` is a Log4j2 [appender](https://logging.apache.org/log4j/2.x/manual/appenders.html) that can be used to forward log events to the [OpenTelemetry Log SDK](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk/logs). +`OpenTelemetryAppender` is a +Log4j2 [appender](https://logging.apache.org/log4j/2.x/manual/appenders.html) that can be used to +forward log events to +the [OpenTelemetry Log SDK](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk/logs) +. The following demonstrates how you might configure the appender in your `log4j.xml` configuration: ```xml - + - + - + - - + + diff --git a/instrumentation/log4j/log4j-2.16/library-autoconfigure/build.gradle.kts b/instrumentation/log4j/log4j-2.16/library-autoconfigure/build.gradle.kts new file mode 100644 index 000000000000..b8383d15f9b9 --- /dev/null +++ b/instrumentation/log4j/log4j-2.16/library-autoconfigure/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("otel.library-instrumentation") +} + +dependencies { + library("org.apache.logging.log4j:log4j-core:2.16.0") + + testImplementation(project(":instrumentation:log4j:log4j-2-common:testing")) +} diff --git a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryContextDataProvider.java b/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryContextDataProvider.java similarity index 96% rename from instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryContextDataProvider.java rename to instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryContextDataProvider.java index db87e187fbb1..6d02c56607db 100644 --- a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryContextDataProvider.java +++ b/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryContextDataProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import static io.opentelemetry.instrumentation.api.log.LoggingContextConstants.SPAN_ID; import static io.opentelemetry.instrumentation.api.log.LoggingContextConstants.TRACE_FLAGS; diff --git a/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider b/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider new file mode 100644 index 000000000000..b02aaba39449 --- /dev/null +++ b/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider @@ -0,0 +1 @@ +io.opentelemetry.instrumentation.log4j.v2_16.OpenTelemetryContextDataProvider diff --git a/instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy b/instrumentation/log4j/log4j-2.16/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy similarity index 100% rename from instrumentation/log4j/log4j-2.13.2/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy rename to instrumentation/log4j/log4j-2.16/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy diff --git a/instrumentation/log4j/log4j-2.13.2/library/build.gradle.kts b/instrumentation/log4j/log4j-2.16/library/build.gradle.kts similarity index 81% rename from instrumentation/log4j/log4j-2.13.2/library/build.gradle.kts rename to instrumentation/log4j/log4j-2.16/library/build.gradle.kts index a22684071bce..c367c7bce614 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/build.gradle.kts +++ b/instrumentation/log4j/log4j-2.16/library/build.gradle.kts @@ -5,7 +5,7 @@ plugins { dependencies { compileOnly("io.opentelemetry:opentelemetry-sdk-logs") - library("org.apache.logging.log4j:log4j-core:2.13.2") + library("org.apache.logging.log4j:log4j-core:2.16.0") testImplementation("io.opentelemetry:opentelemetry-sdk-logs") diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/LogEventMapper.java b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/LogEventMapper.java similarity index 98% rename from instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/LogEventMapper.java rename to instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/LogEventMapper.java index 7d8a24c52513..627b21f900dd 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/LogEventMapper.java +++ b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/LogEventMapper.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppender.java b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppender.java similarity index 97% rename from instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppender.java rename to instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppender.java index ff89b3f9b947..2ca66d42fe78 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppender.java +++ b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppender.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import io.opentelemetry.sdk.logs.LogBuilder; import io.opentelemetry.sdk.logs.SdkLogEmitterProvider; diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4j.java b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4j.java similarity index 97% rename from instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4j.java rename to instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4j.java index be32db66e710..8f9d088ed88c 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4j.java +++ b/instrumentation/log4j/log4j-2.16/library/src/main/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4j.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import io.opentelemetry.sdk.logs.SdkLogEmitterProvider; import java.util.ArrayList; diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderConfigTest.java b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderConfigTest.java similarity index 96% rename from instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderConfigTest.java rename to instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderConfigTest.java index f5595fdcd2c9..15539cd21ee9 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderConfigTest.java +++ b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderConfigTest.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; -import static io.opentelemetry.instrumentation.log4j.v2_13_2.LogEventMapper.ATTR_THROWABLE_MESSAGE; +import static io.opentelemetry.instrumentation.log4j.v2_16.LogEventMapper.ATTR_THROWABLE_MESSAGE; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; import io.opentelemetry.api.common.Attributes; diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderTest.java b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderTest.java similarity index 96% rename from instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderTest.java rename to instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderTest.java index 7615fedd08c6..29edfec09068 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryAppenderTest.java +++ b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryAppenderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4jTest.java b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4jTest.java similarity index 95% rename from instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4jTest.java rename to instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4jTest.java index a4b48cd22477..e49590133206 100644 --- a/instrumentation/log4j/log4j-2.13.2/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_13_2/OpenTelemetryLog4jTest.java +++ b/instrumentation/log4j/log4j-2.16/library/src/test/java/io/opentelemetry/instrumentation/log4j/v2_16/OpenTelemetryLog4jTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.log4j.v2_13_2; +package io.opentelemetry.instrumentation.log4j.v2_16; import static org.assertj.core.api.Assertions.assertThatCode; import static org.mockito.ArgumentMatchers.any; diff --git a/instrumentation/log4j/log4j-2.16/library/src/test/resources/log4j2-test.xml b/instrumentation/log4j/log4j-2.16/library/src/test/resources/log4j2-test.xml new file mode 100644 index 000000000000..6e18842b30fe --- /dev/null +++ b/instrumentation/log4j/log4j-2.16/library/src/test/resources/log4j2-test.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/instrumentation/log4j/log4j-2.7/javaagent/build.gradle.kts b/instrumentation/log4j/log4j-2.7/javaagent/build.gradle.kts index b6e839968ea8..2ab8664b06c5 100644 --- a/instrumentation/log4j/log4j-2.7/javaagent/build.gradle.kts +++ b/instrumentation/log4j/log4j-2.7/javaagent/build.gradle.kts @@ -6,7 +6,7 @@ muzzle { pass { group.set("org.apache.logging.log4j") module.set("log4j-core") - versions.set("[2.7,2.13.2)") + versions.set("[2.7,2.16.0)") assertInverse.set(true) } } @@ -16,5 +16,5 @@ dependencies { testImplementation(project(":instrumentation:log4j:log4j-2-common:testing")) - latestDepTestLibrary("org.apache.logging.log4j:log4j-core:2.13.1") + latestDepTestLibrary("org.apache.logging.log4j:log4j-core:2.15.0") } diff --git a/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java b/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java index 4f5fa3e189d9..3170f467d92c 100644 --- a/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java +++ b/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java @@ -23,8 +23,16 @@ public Log4j27InstrumentationModule() { @Override public ElementMatcher.Junction classLoaderMatcher() { + // want to cover 2.7 through (and including) 2.15.0 (but not including 2.16.0+) + // - ContextDataInjectorFactory introduced in 2.7 + // - DefaultArbiter introduced in 2.15.0 + // - LookupMessagePatternConverter introduced in 2.15.0, removed in 2.16.0 return hasClassesNamed("org.apache.logging.log4j.core.impl.ContextDataInjectorFactory") - .and(not(hasClassesNamed("org.apache.logging.log4j.core.util.ContextDataProvider"))); + .and( + not(hasClassesNamed("org.apache.logging.log4j.core.config.arbiters.DefaultArbiter")) + .or( + hasClassesNamed( + "org.apache.logging.log4j.core.pattern.MessagePatternConverter$LookupMessagePatternConverter"))); } @Override diff --git a/settings.gradle.kts b/settings.gradle.kts index 9b20891bf4f4..c41336f4fb26 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -265,9 +265,9 @@ include(":instrumentation:liberty:liberty:javaagent") include(":instrumentation:liberty:liberty-dispatcher:javaagent") include(":instrumentation:log4j:log4j-1.2:javaagent") include(":instrumentation:log4j:log4j-2.7:javaagent") -include(":instrumentation:log4j:log4j-2.13.2:javaagent") -include(":instrumentation:log4j:log4j-2.13.2:library") -include(":instrumentation:log4j:log4j-2.13.2:library-autoconfigure") +include(":instrumentation:log4j:log4j-2.16:javaagent") +include(":instrumentation:log4j:log4j-2.16:library") +include(":instrumentation:log4j:log4j-2.16:library-autoconfigure") include(":instrumentation:log4j:log4j-2-common:testing") include(":instrumentation:logback-1.0:javaagent") include(":instrumentation:logback-1.0:library") diff --git a/smoke-tests/images/grpc/build.gradle b/smoke-tests/images/grpc/build.gradle index b917e4252e95..940b66784c86 100644 --- a/smoke-tests/images/grpc/build.gradle +++ b/smoke-tests/images/grpc/build.gradle @@ -21,7 +21,7 @@ dependencies { implementation platform("io.grpc:grpc-bom:1.33.1") implementation platform("io.opentelemetry:opentelemetry-bom:1.0.0") implementation platform("io.opentelemetry:opentelemetry-bom-alpha:1.0.0-alpha") - implementation platform("org.apache.logging.log4j:log4j-bom:2.13.2") + implementation platform("org.apache.logging.log4j:log4j-bom:2.16.0") implementation "io.grpc:grpc-netty-shaded" implementation "io.grpc:grpc-protobuf"