Skip to content

Commit f0bd7c0

Browse files
authored
Make OpenTelemetryAppender.Builder public (#7521)
Allows for programatic configuration as discussed in this [CNCF slack thread](https://cloud-native.slack.com/archives/C01N5UCHTEH/p1673028580643009).
1 parent 99060ef commit f0bd7c0

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public static <B extends Builder<B>> B builder() {
4949
return new Builder<B>().asBuilder();
5050
}
5151

52-
static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B>
52+
public static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B>
5353
implements org.apache.logging.log4j.core.util.Builder<OpenTelemetryAppender> {
5454

5555
@PluginBuilderAttribute private boolean captureExperimentalAttributes;

instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppenderConfigTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import org.apache.logging.log4j.Marker;
3333
import org.apache.logging.log4j.MarkerManager;
3434
import org.apache.logging.log4j.ThreadContext;
35+
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
36+
import org.apache.logging.log4j.message.FormattedMessage;
3537
import org.apache.logging.log4j.message.StringMapMessage;
3638
import org.apache.logging.log4j.message.StructuredDataMessage;
3739
import org.junit.jupiter.api.BeforeAll;
@@ -68,6 +70,22 @@ void setup() {
6870
ThreadContext.clearAll();
6971
}
7072

73+
@Test
74+
void initializeWithBuilder() {
75+
OpenTelemetryAppender appender =
76+
OpenTelemetryAppender.builder().setName("OpenTelemetryAppender").build();
77+
appender.start();
78+
79+
appender.append(
80+
Log4jLogEvent.newBuilder()
81+
.setMessage(new FormattedMessage("log message 1", (Object) null))
82+
.build());
83+
84+
List<LogRecordData> logDataList = logRecordExporter.getFinishedLogItems();
85+
assertThat(logDataList)
86+
.satisfiesExactly(logRecordData -> assertThat(logDataList.get(0)).hasBody("log message 1"));
87+
}
88+
7189
@Test
7290
void logNoSpan() {
7391
logger.info("log message 1");

0 commit comments

Comments
 (0)