Class 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.