I am using logback for logging in my spring boot application and using the pattern as per:
"%d [%thread] %-5p [%c] [%F:%L] [trace=%X{X-B3-TraceId:-},span=%X{X-B3-SpanId:-}] - %msg%n"
Now I want to move to the JSON layout for my logs. But I don't see a way to apply the pattern to my logs as a result many of the above information is lost.
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
<timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
</layout>
</appender>
Any alternative way to achieve the same?
I have came across the same problem after implementing the
JsonLayoutin mylogback-spring.xmlI realized I cannot put in my own custom pattern.Well after googling a lot and wasting few hours I came across 1 more kind of logAppender which allows pattern and also print logs in Json format.
You need to use
net.logstash.logback.encoder.LoggingEventCompositeJsonEncoderencoder instead ofJsonLayoutThe sample implementation can be as follows:
Edit: For in-details documentation you can also check the this github link: