Class JsonLayout
- All Implemented Interfaces:
LocationAware,Layout<String>,Encoder<LogEvent>,StringLayout
Complete well-formed JSON vs. fragment JSON
If you configure complete="true", the appender outputs a well-formed JSON document. By default, with
complete="false", you should include the output as an external file in a separate file to form a
well-formed JSON document.
If complete="false", the appender does not write the JSON open array character "[" at the start
of the document, "]" and the end, nor comma "," between records.
Encoding
Appenders using this layout should have their charset set to UTF-8 or UTF-16, otherwise
events containing non ASCII characters could result in corrupted log files.
Pretty vs. compact JSON
By default, the JSON layout is not compact (a.k.a. "pretty") with compact="false", which means the
appender uses end-of-line characters and indents lines to format the text. If compact="true", then no
end-of-line or indentation is used. Message content may contain, of course, escaped end-of-lines.
Additional Fields
This property allows addition of custom fields into generated JSON.
<JsonLayout><KeyValuePair key="foo" value="bar"/></JsonLayout> inserts "foo":"bar" directly
into JSON output. Supports Lookup expressions.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classJsonLayout.Builder<B extends JsonLayout.Builder<B>>Nested classes/interfaces inherited from class org.apache.logging.log4j.core.layout.AbstractStringLayout
AbstractStringLayout.Serializer, AbstractStringLayout.Serializer2 -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.logging.log4j.core.layout.AbstractJacksonLayout.ResolvableKeyValuePair[]protected final booleanprotected static final Stringprotected final booleanprotected static final Stringprotected final Stringprotected final booleanprotected final com.fasterxml.jackson.databind.ObjectWriterFields inherited from class org.apache.logging.log4j.core.layout.AbstractStringLayout
DEFAULT_STRING_BUILDER_SIZE, MAX_STRING_BUILDER_SIZEFields inherited from class org.apache.logging.log4j.core.layout.AbstractLayout
configuration, eventCount, footer, header, LOGGERFields inherited from interface org.apache.logging.log4j.core.Layout
ELEMENT_TYPE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedJsonLayout(Configuration config, boolean locationInfo, boolean properties, boolean encodeThreadContextAsList, boolean complete, boolean compact, boolean eventEol, String endOfLine, String headerPattern, String footerPattern, Charset charset, boolean includeStacktrace) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionstatic JsonLayoutCreates a JSON Layout using the default settings.static JsonLayoutcreateLayout(Configuration config, boolean locationInfo, boolean properties, boolean propertiesAsList, boolean complete, boolean compact, boolean eventEol, String headerPattern, String footerPattern, Charset charset, boolean includeStacktrace) Deprecated.UsenewBuilder()insteadReturns a description of the content format.Returns the content type output by this layout.byte[]Returns appropriate JSON footer.byte[]Returns appropriate JSON header.static <B extends JsonLayout.Builder<B>>
BtoSerializable(LogEvent event) Formats aLogEvent.voidtoSerializable(LogEvent event, Writer writer) protected static booleanvalueNeedsLookup(String value) protected ObjectwrapLogEvent(LogEvent event) Methods inherited from class org.apache.logging.log4j.core.layout.AbstractStringLayout
getBytes, getCharset, getFooterSerializer, getHeaderSerializer, getStringBuilder, getStringBuilderEncoder, requiresLocation, serializeToBytes, serializeToString, toByteArray, trimToMaxSizeMethods inherited from class org.apache.logging.log4j.core.layout.AbstractLayout
encode, getConfiguration, markEvent
-
Field Details
-
DEFAULT_EOL
- See Also:
-
COMPACT_EOL
- See Also:
-
eol
-
objectWriter
protected final com.fasterxml.jackson.databind.ObjectWriter objectWriter -
compact
protected final boolean compact -
complete
protected final boolean complete -
includeNullDelimiter
protected final boolean includeNullDelimiter -
additionalFields
protected final org.apache.logging.log4j.core.layout.AbstractJacksonLayout.ResolvableKeyValuePair[] additionalFields
-
-
Constructor Details
-
JsonLayout
@Deprecated protected JsonLayout(Configuration config, boolean locationInfo, boolean properties, boolean encodeThreadContextAsList, boolean complete, boolean compact, boolean eventEol, String endOfLine, String headerPattern, String footerPattern, Charset charset, boolean includeStacktrace) Deprecated.UsenewBuilder()instead
-
-
Method Details
-
getHeader
public byte[] getHeader()Returns appropriate JSON header.- Specified by:
getHeaderin interfaceLayout<String>- Overrides:
getHeaderin classAbstractStringLayout- Returns:
- a byte array containing the header, opening the JSON array.
-
getContentFormat
Description copied from interface:LayoutReturns a description of the content format.- Specified by:
getContentFormatin interfaceLayout<String>- Overrides:
getContentFormatin classAbstractLayout<String>- Returns:
- a Map of key/value pairs describing the Layout-specific content format, or an empty Map if no content format descriptors are specified.
-
getContentType
Description copied from interface:LayoutReturns the content type output by this layout. The base class returns "text/plain".- Specified by:
getContentTypein interfaceLayout<String>- Overrides:
getContentTypein classAbstractStringLayout- Returns:
- The content type.
-
createLayout
@Deprecated public static JsonLayout createLayout(Configuration config, boolean locationInfo, boolean properties, boolean propertiesAsList, boolean complete, boolean compact, boolean eventEol, String headerPattern, String footerPattern, Charset charset, boolean includeStacktrace) Deprecated.UsenewBuilder()insteadCreates a JSON Layout.- Parameters:
config- The plugin configuration.locationInfo- If "true", includes the location information in the generated JSON.properties- If "true", includes the thread context map in the generated JSON.propertiesAsList- If true, the thread context map is included as a list of map entry objects, where each entry has a "key" attribute (whose value is the key) and a "value" attribute (whose value is the value). Defaults to false, in which case the thread context map is included as a simple map of key-value pairs.complete- If "true", includes the JSON header and footer, and comma between records.compact- If "true", does not use end-of-lines and indentation, defaults to "false".eventEol- If "true", forces an EOL after each log event (even if compact is "true"), defaults to "false". This allows one even per line, even in compact mode.headerPattern- The header pattern, defaults to"["if null.footerPattern- The footer pattern, defaults to"]"if null.charset- The character set to use, ifnull, uses "UTF-8".includeStacktrace- If "true", includes the stacktrace of any Throwable in the generated JSON, defaults to "true".- Returns:
- A JSON Layout.
-
newBuilder
-
createDefaultLayout
Creates a JSON Layout using the default settings. Useful for testing.- Returns:
- A JSON Layout.
-
toSerializable
- Throws:
IOException
-
valueNeedsLookup
-
toSerializable
Formats aLogEvent.- Parameters:
event- The LogEvent.- Returns:
- The XML representation of the LogEvent.
-
wrapLogEvent
-
newBuilder()instead