Class MessageResolver
- java.lang.Object
-
- org.apache.logging.log4j.layout.template.json.resolver.MessageResolver
-
- All Implemented Interfaces:
EventResolver,TemplateResolver<LogEvent>
public final class MessageResolver extends java.lang.Object implements EventResolver
Messageresolver.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 aObjectMessageorMultiformatMessagewith JSON support, its emitted JSON type (string, list, object, etc.) will be retained:{ "$resolver": "message" }Given the above configuration, aSimpleMessagewill generate a "sample log message", whereas aMapMessagewill 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, aSimpleMessagewill generate a {"formattedMessage": "sample log message"} and aMapMessagewill generate a {"action": "login", "sessionId": "87asd97a"}. Note that both emitted JSONs are of type object and have no type-conflicting fields.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String[]FORMATSprivate EventResolverinternalResolver
-
Constructor Summary
Constructors Constructor Description MessageResolver(TemplateResolverConfig config)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static EventResolvercreateInternalResolver(TemplateResolverConfig config)private static EventResolvercreateObjectResolver(java.lang.String fallbackKey)private static EventResolvercreateStringResolver(java.lang.String fallbackKey)(package private) static java.lang.StringgetName()voidresolve(LogEvent logEvent, JsonWriter jsonWriter)Resolves the givenvalueusing the providedJsonWriter.private static voidresolveString(java.lang.String fallbackKey, LogEvent logEvent, JsonWriter jsonWriter)private static voidresolveString(java.lang.String fallbackKey, Message message, JsonWriter jsonWriter)private static booleanwriteMultiformatMessage(JsonWriter jsonWriter, Message message)private static booleanwriteObjectMessage(JsonWriter jsonWriter, Message message)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver
isFlattening, isResolvable, isResolvable, resolve
-
-
-
-
Field Detail
-
FORMATS
private static final java.lang.String[] FORMATS
-
internalResolver
private final EventResolver internalResolver
-
-
Constructor Detail
-
MessageResolver
MessageResolver(TemplateResolverConfig config)
-
-
Method Detail
-
getName
static java.lang.String getName()
-
createInternalResolver
private static EventResolver createInternalResolver(TemplateResolverConfig config)
-
resolve
public void resolve(LogEvent logEvent, JsonWriter jsonWriter)
Description copied from interface:TemplateResolverResolves the givenvalueusing the providedJsonWriter.- Specified by:
resolvein interfaceTemplateResolver<LogEvent>
-
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)
-
-