From f0bd7c0504eefee78788a296f49044a7886c1047 Mon Sep 17 00:00:00 2001 From: jack-berg <34418638+jack-berg@users.noreply.github.com> Date: Mon, 9 Jan 2023 11:14:39 -0600 Subject: [PATCH] Make OpenTelemetryAppender.Builder public (#7521) Allows for programatic configuration as discussed in this [CNCF slack thread](https://cloud-native.slack.com/archives/C01N5UCHTEH/p1673028580643009). --- .../appender/v2_17/OpenTelemetryAppender.java | 2 +- .../v2_17/OpenTelemetryAppenderConfigTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java index a206423e6b..f2a4b77f80 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java @@ -49,7 +49,7 @@ public class OpenTelemetryAppender extends AbstractAppender { return new Builder().asBuilder(); } - static class Builder> extends AbstractAppender.Builder + public static class Builder> extends AbstractAppender.Builder implements org.apache.logging.log4j.core.util.Builder { @PluginBuilderAttribute private boolean captureExperimentalAttributes; diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppenderConfigTest.java b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppenderConfigTest.java index 0343acc935..ed59fbb42a 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppenderConfigTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppenderConfigTest.java @@ -32,6 +32,8 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.ThreadContext; +import org.apache.logging.log4j.core.impl.Log4jLogEvent; +import org.apache.logging.log4j.message.FormattedMessage; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.message.StructuredDataMessage; import org.junit.jupiter.api.BeforeAll; @@ -68,6 +70,22 @@ class OpenTelemetryAppenderConfigTest { ThreadContext.clearAll(); } + @Test + void initializeWithBuilder() { + OpenTelemetryAppender appender = + OpenTelemetryAppender.builder().setName("OpenTelemetryAppender").build(); + appender.start(); + + appender.append( + Log4jLogEvent.newBuilder() + .setMessage(new FormattedMessage("log message 1", (Object) null)) + .build()); + + List logDataList = logRecordExporter.getFinishedLogItems(); + assertThat(logDataList) + .satisfiesExactly(logRecordData -> assertThat(logDataList.get(0)).hasBody("log message 1")); + } + @Test void logNoSpan() { logger.info("log message 1");