diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/build.gradle.kts b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/build.gradle.kts index 7425e00ef5b7..26b587e868e3 100644 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/build.gradle.kts +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/build.gradle.kts @@ -5,6 +5,7 @@ plugins { base.archivesName.set("${base.archivesName.get()}-autoconfigure") dependencies { + compileOnly(project(":javaagent-bootstrap")) library("org.apache.logging.log4j:log4j-core:2.17.0") testImplementation(project(":instrumentation:log4j:log4j-context-data:log4j-context-data-common:testing")) diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/OpenTelemetryContextDataProvider.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/OpenTelemetryContextDataProvider.java index 459d7085fcd8..2ce6e3126ac5 100644 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/OpenTelemetryContextDataProvider.java +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/OpenTelemetryContextDataProvider.java @@ -15,6 +15,7 @@ import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; +import io.opentelemetry.javaagent.bootstrap.ConfiguredResourceAttributesHolder; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -47,6 +48,7 @@ public Map supplyContextData() { contextData.put(TRACE_ID, spanContext.getTraceId()); contextData.put(SPAN_ID, spanContext.getSpanId()); contextData.put(TRACE_FLAGS, spanContext.getTraceFlags().asHex()); + contextData.putAll(ConfiguredResourceAttributesHolder.getResourceAttributes()); if (BAGGAGE_ENABLED) { Baggage baggage = Baggage.fromContext(context); diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/SpanDecoratingContextDataInjector.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/SpanDecoratingContextDataInjector.java index 544d1cdd16be..87c810271435 100644 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/SpanDecoratingContextDataInjector.java +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/SpanDecoratingContextDataInjector.java @@ -14,6 +14,7 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; +import io.opentelemetry.javaagent.bootstrap.ConfiguredResourceAttributesHolder; import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig; import java.util.List; import java.util.Map; @@ -55,6 +56,11 @@ public StringMap injectContextData(List list, StringMap stringMap) { newContextData.putValue(SPAN_ID, currentContext.getSpanId()); newContextData.putValue(TRACE_FLAGS, currentContext.getTraceFlags().asHex()); + for (Map.Entry entry : + ConfiguredResourceAttributesHolder.getResourceAttributes().entrySet()) { + newContextData.putValue(entry.getKey(), entry.getValue()); + } + if (BAGGAGE_ENABLED) { Baggage baggage = Baggage.fromContext(context); for (Map.Entry entry : baggage.asMap().entrySet()) { diff --git a/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java b/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java index e1e24858a96b..616b016ec1f8 100644 --- a/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java +++ b/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java @@ -81,7 +81,7 @@ public static void onExit( spanContextData.put(SPAN_ID, spanContext.getSpanId()); spanContextData.put(TRACE_FLAGS, spanContext.getTraceFlags().asHex()); - spanContextData.putAll(ConfiguredResourceAttributesHolder.getResourceAttribute()); + spanContextData.putAll(ConfiguredResourceAttributesHolder.getResourceAttributes()); } if (LogbackSingletons.addBaggage()) { diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolder.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolder.java index a8ae4948c494..b36ef9c2d3c6 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolder.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolder.java @@ -15,10 +15,10 @@ public final class ConfiguredResourceAttributesHolder { - private static final Map resourceAttribute = new HashMap<>(); + private static final Map resourceAttributes = new HashMap<>(); - public static Map getResourceAttribute() { - return resourceAttribute; + public static Map getResourceAttributes() { + return resourceAttributes; } public static void initialize(Attributes resourceAttribute) { @@ -27,8 +27,7 @@ public static void initialize(Attributes resourceAttribute) { for (String key : mdcResourceAttributes) { String value = resourceAttribute.get(stringKey(key)); if (value != null) { - ConfiguredResourceAttributesHolder.resourceAttribute.put( - String.format("otel.resource.%s", key), value); + ConfiguredResourceAttributesHolder.resourceAttributes.put(key, value); } } } @@ -44,7 +43,7 @@ private static String[] getConfiguredAttributes() { @Nullable public static String getAttributeValue(String key) { - return resourceAttribute.get(String.format("otel.resource.%s", key)); + return resourceAttributes.get(key); } private ConfiguredResourceAttributesHolder() {} diff --git a/javaagent-bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolderTest.java b/javaagent-bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolderTest.java index 3a2e40d5d65f..0d2fb9cb1d90 100644 --- a/javaagent-bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolderTest.java +++ b/javaagent-bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/ConfiguredResourceAttributesHolderTest.java @@ -5,8 +5,7 @@ package io.opentelemetry.javaagent.bootstrap; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; +import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; @@ -22,11 +21,14 @@ class ConfiguredResourceAttributesHolderTest { key = "otel.instrumentation.mdc.resource-attributes", value = "service.name,runtime") void testGetAttributeValue() { - Attributes attributes = Attributes.builder().put("service.name", "test-service").build(); + Attributes attributes = + Attributes.builder().put("service.name", "test-service").put("runtime", "JVM").build(); ConfiguredResourceAttributesHolder.initialize(attributes); - assertEquals( - "test-service", ConfiguredResourceAttributesHolder.getAttributeValue("service.name")); + + assertThat(ConfiguredResourceAttributesHolder.getAttributeValue("service.name")) + .isEqualTo("test-service"); + assertThat(ConfiguredResourceAttributesHolder.getAttributeValue("runtime")).isEqualTo("JVM"); } @Test @@ -38,7 +40,7 @@ void testGetAttributeValueWhenKeyIsNotString() { .build(); ConfiguredResourceAttributesHolder.initialize(attributes); - assertNull(ConfiguredResourceAttributesHolder.getAttributeValue("items")); + assertThat(ConfiguredResourceAttributesHolder.getAttributeValue("items")).isNull(); } @Test @@ -48,6 +50,6 @@ void testGetAttributeValueWhenConfigIsNotSet() { Attributes.builder().put(AttributeKey.stringArrayKey("don't care"), "won't care").build(); ConfiguredResourceAttributesHolder.initialize(attributes); - assertNull(ConfiguredResourceAttributesHolder.getAttributeValue("dc-wc")); + assertThat(ConfiguredResourceAttributesHolder.getAttributeValue("dc-wc")).isNull(); } }