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
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 aObjectMessage
orMultiformatMessage
with JSON support, its emitted JSON type (string, list, object, etc.) will be retained:{ "$resolver": "message" }
Given the above configuration, aSimpleMessage
will generate a "sample log message", whereas aMapMessage
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, aSimpleMessage
will generate a {"formattedMessage": "sample log message"} and aMapMessage
will 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[]
FORMATS
private EventResolver
internalResolver
-
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 EventResolver
createInternalResolver(TemplateResolverConfig config)
private static EventResolver
createObjectResolver(java.lang.String fallbackKey)
private static EventResolver
createStringResolver(java.lang.String fallbackKey)
(package private) static java.lang.String
getName()
void
resolve(LogEvent logEvent, JsonWriter jsonWriter)
Resolves the givenvalue
using the providedJsonWriter
.private static void
resolveString(java.lang.String fallbackKey, LogEvent logEvent, JsonWriter jsonWriter)
private static void
resolveString(java.lang.String fallbackKey, Message message, JsonWriter jsonWriter)
private static boolean
writeMultiformatMessage(JsonWriter jsonWriter, Message message)
private static boolean
writeObjectMessage(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:TemplateResolver
Resolves the givenvalue
using the providedJsonWriter
.- Specified by:
resolve
in 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)
-
-