@@ -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