Custom log message with additional custom fields in logback console appender in json format

I have this appender
<appender name="CONSOLE_JSON" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{ "name": "${foobar.foo}", "id": "${foobar.foo.Id}"}</customFields>
</encoder>
</appender>
and it generates the logs like:
{"@timestamp":"2025-04-21T20:28:10.501365652Z","@version":"1","message":"This is process log.","logger_name":"com.foo.bar.common.Logger","thread_name":"dev","level":"INFO","level_value":20000,"name":"foobar","Id":"1"}
I need to append the timestamp and loggername to the message filed so it looks like :
"message":" 025-04-21T20:28:10.5013 [com.foo.bar.common.Logger] This is process log."
how to do that? Just to note that I also tried using LoggingEventCompositeJsonEncoder but had no success
Answer
Use the LoggingEventCompositeJsonEncoder
with a PatternLayoutProvider
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<!-- add other providers as desired -->
<!-- ... -->
<pattern>
<pattern>
{ "message": "%date{STRICT} [%logger] %message" }
</pattern>
</pattern>
</providers>
</encoder>
Enjoyed this article?
Check out more content on our blog or follow us on social media.
Browse more articles