how to print mdc value in logback

4.3k Views Asked by At

I'm not getting mdc value in logback

can you please help me

Java Code:

       String traceId = MDC.get(getJlgConfiguration().getTraceId());
        String sessionId = MDC.get(getJlgConfiguration().getSessionId());

Logback.xml

<configuration scan="true" scanPeriod="60" debug="true">

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} - %class{0}.%M %L, ole-session-id:%mdc{ole-session-id:-NONE}, jlg-trace-id:%mdc{jlg-trace-id:-NONE} - %msg%n
        </Pattern>
    </encoder>
    <root level="info">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>
2

There are 2 best solutions below

2
Simon Martinelli On

You have to use %X instead of %mdc

%d{yyyy-MM-dd HH:mm:ss} - %class{0}.%M %L, ole-session-id:%X{ole-session-id:-NONE}, jlg-trace-id:%X{jlg-trace-id:-NONE} - %msg%n

Checkout the documentation for more information http://logback.qos.ch/manual/mdc.html

0
Its-Saab On

Maybe this answer can help, not able to put the values in the MDC

Basically if for example, you're using log4j as the impl underneath slf4j, then you would need log4j config (ConversionPattern) like:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%-5p| %t | [ole-session-id:%X{ole-session-id:-NONE}, jlg-trace-id:%X{jlg-trace-id:-NONE}] | %logger{36} | %m %n</pattern>
    </encoder>
</appender>