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

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

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>

Related Articles