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.AbstractJacksonLayout
AbstractJacksonLayout.LogEventWithAdditionalFields, AbstractJacksonLayout.ResolvableKeyValuePairNested classes/interfaces inherited from class org.apache.logging.log4j.core.layout.AbstractStringLayout
AbstractStringLayout.Serializer, AbstractStringLayout.Serializer2 -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final Stringprivate static final Stringprivate static final StringFields inherited from class org.apache.logging.log4j.core.layout.AbstractJacksonLayout
additionalFields, compact, COMPACT_EOL, complete, DEFAULT_EOL, eol, includeNullDelimiter, 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.privateJsonLayout(Configuration config, boolean locationInfo, boolean properties, boolean encodeThreadContextAsList, boolean complete, boolean compact, boolean eventEol, String endOfLine, String headerPattern, String footerPattern, Charset charset, boolean includeStacktrace, boolean stacktraceAsString, boolean includeNullDelimiter, boolean includeTimeMillis, KeyValuePair[] additionalFields, boolean objectMessageAsJsonObject) -
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>>
BvoidtoSerializable(LogEvent event, Writer writer) Methods inherited from class org.apache.logging.log4j.core.layout.AbstractJacksonLayout
toSerializable, valueNeedsLookup, wrapLogEventMethods 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_FOOTER
- See Also:
-
DEFAULT_HEADER
- See Also:
-
CONTENT_TYPE
- See Also:
-
-
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 -
JsonLayout
private 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, boolean stacktraceAsString, boolean includeNullDelimiter, boolean includeTimeMillis, KeyValuePair[] additionalFields, boolean objectMessageAsJsonObject)
-
-
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 header 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
- Overrides:
toSerializablein classAbstractJacksonLayout- Throws:
IOException
-
newBuilder()instead