Class MessageResolver

  • All Implemented Interfaces:
    EventResolver, TemplateResolver<LogEvent>

    public final class MessageResolver
    extends java.lang.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.
    • Field Detail

      • FORMATS

        private static final java.lang.String[] FORMATS
    • Method Detail

      • getName

        static java.lang.String getName()
      • createStringResolver

        private static EventResolver createStringResolver​(java.lang.String fallbackKey)
      • resolveString

        private static void resolveString​(java.lang.String fallbackKey,
                                          LogEvent logEvent,
                                          JsonWriter jsonWriter)
      • resolveString

        private static void resolveString​(java.lang.String fallbackKey,
                                          Message message,
                                          JsonWriter jsonWriter)
      • createObjectResolver

        private static EventResolver createObjectResolver​(java.lang.String fallbackKey)
      • writeMultiformatMessage

        private static boolean writeMultiformatMessage​(JsonWriter jsonWriter,
                                                       Message message)
      • writeObjectMessage

        private static boolean writeObjectMessage​(JsonWriter jsonWriter,
                                                  Message message)