Class JsonLayout

  • All Implemented Interfaces:
    LocationAware, Layout<java.lang.String>, Encoder<LogEvent>, StringLayout

    @Plugin(name="JsonLayout",
            category="Core",
            elementType="layout",
            printObject=true)
    public final class JsonLayout
    extends AbstractJacksonLayout
    Note: The JsonLayout should be considered to be deprecated. Please use JsonTemplateLayout instead. Appends a series of JSON events as strings serialized as bytes.

    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.

    • Constructor Detail

      • JsonLayout

        @Deprecated
        protected JsonLayout​(Configuration config,
                             boolean locationInfo,
                             boolean properties,
                             boolean encodeThreadContextAsList,
                             boolean complete,
                             boolean compact,
                             boolean eventEol,
                             java.lang.String endOfLine,
                             java.lang.String headerPattern,
                             java.lang.String footerPattern,
                             java.nio.charset.Charset charset,
                             boolean includeStacktrace)
        Deprecated.
        Use newBuilder() instead
      • JsonLayout

        private JsonLayout​(Configuration config,
                           boolean locationInfo,
                           boolean properties,
                           boolean encodeThreadContextAsList,
                           boolean complete,
                           boolean compact,
                           boolean eventEol,
                           java.lang.String endOfLine,
                           java.lang.String headerPattern,
                           java.lang.String footerPattern,
                           java.nio.charset.Charset charset,
                           boolean includeStacktrace,
                           boolean stacktraceAsString,
                           boolean includeNullDelimiter,
                           boolean includeTimeMillis,
                           KeyValuePair[] additionalFields,
                           boolean objectMessageAsJsonObject)
    • Method Detail

      • getHeader

        public byte[] getHeader()
        Returns appropriate JSON header.
        Specified by:
        getHeader in interface Layout<java.lang.String>
        Overrides:
        getHeader in class AbstractStringLayout
        Returns:
        a byte array containing the header, opening the JSON array.
      • getFooter

        public byte[] getFooter()
        Returns appropriate JSON footer.
        Specified by:
        getFooter in interface Layout<java.lang.String>
        Overrides:
        getFooter in class AbstractStringLayout
        Returns:
        a byte array containing the footer, closing the JSON array.
      • getContentFormat

        public java.util.Map<java.lang.String,​java.lang.String> getContentFormat()
        Description copied from interface: Layout
        Returns a description of the content format.
        Specified by:
        getContentFormat in interface Layout<java.lang.String>
        Overrides:
        getContentFormat in class AbstractLayout<java.lang.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

        public java.lang.String getContentType()
        Description copied from interface: Layout
        Returns the content type output by this layout. The base class returns "text/plain".
        Specified by:
        getContentType in interface Layout<java.lang.String>
        Overrides:
        getContentType in class AbstractStringLayout
        Returns:
        The content type.
      • createLayout

        @Deprecated
        public static JsonLayout createLayout​(Configuration config,
                                              boolean locationInfo,
                                              boolean properties,
                                              boolean propertiesAsList,
                                              boolean complete,
                                              boolean compact,
                                              boolean eventEol,
                                              java.lang.String headerPattern,
                                              java.lang.String footerPattern,
                                              java.nio.charset.Charset charset,
                                              boolean includeStacktrace)
        Deprecated.
        Use newBuilder() instead
        Creates 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, if null, uses "UTF-8".
        includeStacktrace - If "true", includes the stacktrace of any Throwable in the generated JSON, defaults to "true".
        Returns:
        A JSON Layout.
      • createDefaultLayout

        public static JsonLayout createDefaultLayout()
        Creates a JSON Layout using the default settings. Useful for testing.
        Returns:
        A JSON Layout.