java.lang.Object
org.apache.logging.log4j.layout.template.json.resolver.MessageResolver
All Implemented Interfaces:
EventResolver, TemplateResolver<LogEvent>

public final class MessageResolver extends Object implements EventResolver
Message resolver.

Configuration

 config      = [ stringified ] , [ fallbackKey ]
 stringified = "stringified" -> boolean
 fallbackKey = "fallbackKey" -> string
 

Examples

Resolve the message into a string:
 {
   "$resolver": "message",
   "stringified": true
 }
 
Resolve the message such that if it is a ObjectMessage or MultiformatMessage with JSON support, its emitted JSON type (string, list, object, etc.) will be retained:
 {
   "$resolver": "message"
 }
 
Given the above configuration, a SimpleMessage will generate a "sample log message", whereas a MapMessage will generate a {"action": "login", "sessionId": "87asd97a"}. Certain indexed log storage systems (e.g., Elasticsearch) will not allow both values to coexist due to type mismatch: one is a string while the other is an object. Here one can use a fallbackKey to work around the problem:
 {
   "$resolver": "message",
   "fallbackKey": "formattedMessage"
 }
 
Using this configuration, a SimpleMessage will generate a {"formattedMessage": "sample log message"} and a MapMessage will generate a {"action": "login", "sessionId": "87asd97a"}. Note that both emitted JSONs are of type object and have no type-conflicting fields.