Skip to content

Commit 1619c66

Browse files
committed
add test for automatically adding the logback mdc appender
1 parent 7777bec commit 1619c66

File tree

1 file changed

+70
-0
lines changed
  • instrumentation/spring/spring-boot-autoconfigure/src/testLogbackAppender/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/logging

1 file changed

+70
-0
lines changed

instrumentation/spring/spring-boot-autoconfigure/src/testLogbackAppender/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/logging/LogbackAppenderTest.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,80 @@ void mdcAppender() {
169169
"traceid", "spanid", "traceflags", "baggage.key")));
170170
}
171171

172+
@Test
173+
void shouldInitializeMdcAppender() {
174+
Map<String, Object> properties = new HashMap<>();
175+
properties.put("logging.config", "classpath:logback-mdc-test.xml");
176+
properties.put("otel.instrumentation.logback-appender.enabled", "false");
177+
178+
SpringApplication app =
179+
new SpringApplication(
180+
TestingOpenTelemetryConfiguration.class, OpenTelemetryAppenderAutoConfiguration.class);
181+
app.setDefaultProperties(properties);
182+
ConfigurableApplicationContext context = app.run();
183+
cleanup.deferCleanup(context);
184+
185+
ListAppender<ILoggingEvent> listAppender = getListAppender();
186+
listAppender.list.clear();
187+
188+
Span span = testing.getOpenTelemetry().getTracer("test").spanBuilder("test").startSpan();
189+
try (Scope ignore = span.makeCurrent()) {
190+
LoggerFactory.getLogger("test").info("test log message");
191+
}
192+
193+
assertThat(testing.logRecords()).isEmpty();
194+
assertThat(listAppender.list)
195+
.satisfiesExactly(
196+
event ->
197+
assertThat(event)
198+
.satisfies(
199+
e -> assertThat(e.getMessage()).isEqualTo("test log message"),
200+
e ->
201+
assertThat(e.getMDCPropertyMap())
202+
.containsOnlyKeys("trace_id", "span_id", "trace_flags")));
203+
}
204+
205+
@Test
206+
void shouldNotInitializeMdcAppenderWhenDisabled() {
207+
Map<String, Object> properties = new HashMap<>();
208+
properties.put("logging.config", "classpath:logback-mdc-test.xml");
209+
properties.put("otel.instrumentation.logback-appender.enabled", "false");
210+
properties.put("otel.instrumentation.logback-mdc.enabled", "false");
211+
212+
SpringApplication app =
213+
new SpringApplication(
214+
TestingOpenTelemetryConfiguration.class, OpenTelemetryAppenderAutoConfiguration.class);
215+
app.setDefaultProperties(properties);
216+
ConfigurableApplicationContext context = app.run();
217+
cleanup.deferCleanup(context);
218+
219+
ListAppender<ILoggingEvent> listAppender = getListAppender();
220+
listAppender.list.clear();
221+
222+
Span span = testing.getOpenTelemetry().getTracer("test").spanBuilder("test").startSpan();
223+
try (Scope ignore = span.makeCurrent()) {
224+
LoggerFactory.getLogger("test").info("test log message");
225+
}
226+
227+
assertThat(testing.logRecords()).isEmpty();
228+
assertThat(listAppender.list)
229+
.satisfiesExactly(
230+
event ->
231+
assertThat(event)
232+
.satisfies(
233+
e -> assertThat(e.getMessage()).isEqualTo("test log message"),
234+
e -> assertThat(e.getMDCPropertyMap()).isEmpty()));
235+
}
236+
172237
@SuppressWarnings("unchecked")
173238
private static ListAppender<ILoggingEvent> getListAppender() {
174239
Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
175240
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger;
241+
ListAppender<ILoggingEvent> listAppender =
242+
(ListAppender<ILoggingEvent>) logbackLogger.getAppender("List");
243+
if (listAppender != null) {
244+
return listAppender;
245+
}
176246
AppenderAttachable<?> mdcAppender =
177247
(AppenderAttachable<?>) logbackLogger.getAppender("OpenTelemetryMdc");
178248
return (ListAppender<ILoggingEvent>) mdcAppender.getAppender("List");

0 commit comments

Comments
 (0)