Search code examples
logbackslf4j

Logback with SLF4J not logging the values set in MDC


I am using logback 1.4.7 with slf4j 2.0.7.

My logback config looks like below

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <property name="CONSOLE_LOG_PATTERN"
    value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(%X{debug_tag}) %clr(${PID:- }){magenta} %clr(---){faint} %clr(${LOGGED_APPLICATION_NAME:-}[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  <property name="FILE_LOG_PATTERN"
    value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} %clr(%X{debug_tag}) ${PID:- } --- ${LOGGED_APPLICATION_NAME:-}[%t] ${LOG_CORRELATION_PATTERN:-}%-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  <root level="WARN"/>
  <!--  SnapshotVerifier prints detailed snapshot on failure. Suppress that!-->
  <logger name="au.com.origin.snapshots.SnapshotVerifier" level="ERROR"/>
  <logger name="com.spotnana" level="INFO"/>

  <!--  Suppress the noise from Kafka in tests where broker is not available. !-->
  <logger name="org.apache.kafka.clients.NetworkClient" level="ERROR"/>
</configuration>

I am using the base.xml and default.xml from here.

I am setting a value in MDC like below

public class GrpcContext {
...
    public GrpcContext() {
        MDC.put("debug_tag", "abc_def");
        log.info("Tuk");    
    }
... 
}

But I am not seeing the MDC in dumped logs.

2023-06-28T17:15:21.799+05:30  INFO   --- [Pool-1-worker-1] c.s.servicetests.grpc.stubs.GrpcContext  : Tuk

Can someone let me know what I am doing wrong?


Solution

  • I have to update the properties like below in the logback configuration

    <property name="CONSOLE_LOG_PATTERN"
        value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(debug_tag=%X{debug_tag}) %clr(${PID:- }){magenta} %clr(---){faint} %clr(${LOGGED_APPLICATION_NAME:-}[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    
    <property name="FILE_LOG_PATTERN"
        value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} %clr(%X{debug_tag}) ${PID:- } --- ${LOGGED_APPLICATION_NAME:-}[%t] ${LOG_CORRELATION_PATTERN:-}%-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>