Class PatternLayout

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

    @Plugin(name="PatternLayout",
            category="Core",
            elementType="layout",
            printObject=true)
    public final class PatternLayout
    extends AbstractStringLayout
    A flexible layout configurable with pattern string.

    The goal of this class is to format a LogEvent and return the results. The format of the result depends on the conversion pattern.

    The conversion pattern is closely related to the conversion pattern of the printf function in C. A conversion pattern is composed of literal text and format control expressions called conversion specifiers.

    See the Log4j Manual for details on the supported pattern converters.

    • Field Detail

      • DEFAULT_CONVERSION_PATTERN

        public static final java.lang.String DEFAULT_CONVERSION_PATTERN
        Default pattern string for log output. Currently set to the string "%m%n" which just prints the application supplied message.
        See Also:
        Constant Field Values
      • TTCC_CONVERSION_PATTERN

        public static final java.lang.String TTCC_CONVERSION_PATTERN
        A conversion pattern equivalent to the TTCCLayout. Current value is %r [%t] %p %c %notEmpty{%x }- %m%n.
        See Also:
        Constant Field Values
      • SIMPLE_CONVERSION_PATTERN

        public static final java.lang.String SIMPLE_CONVERSION_PATTERN
        A simple pattern. Current value is %d [%t] %p %c - %m%n.
        See Also:
        Constant Field Values
      • KEY

        public static final java.lang.String KEY
        Key to identify pattern converters.
        See Also:
        Constant Field Values
      • conversionPattern

        private final java.lang.String conversionPattern
        Conversion pattern.
    • Constructor Detail

      • PatternLayout

        private PatternLayout​(Configuration config,
                              RegexReplacement replace,
                              java.lang.String eventPattern,
                              PatternSelector patternSelector,
                              java.nio.charset.Charset charset,
                              boolean alwaysWriteExceptions,
                              boolean disableAnsi,
                              boolean noConsoleNoAnsi,
                              java.lang.String headerPattern,
                              java.lang.String footerPattern)
        Constructs a PatternLayout using the supplied conversion pattern.
        Parameters:
        config - The Configuration.
        replace - The regular expression to match.
        eventPattern - conversion pattern.
        patternSelector - The PatternSelector.
        charset - The character set.
        alwaysWriteExceptions - Whether or not exceptions should always be handled in this pattern (if true, exceptions will be written even if the pattern does not specify so).
        disableAnsi - If "true", do not output ANSI escape codes
        noConsoleNoAnsi - If "true" (default) and System.console() is null, do not output ANSI escape codes
        headerPattern - header conversion pattern.
        footerPattern - footer conversion pattern.
    • Method Detail

      • getConversionPattern

        public java.lang.String getConversionPattern()
        Gets the conversion pattern.
        Returns:
        the conversion pattern.
      • getContentFormat

        public java.util.Map<java.lang.String,​java.lang.String> getContentFormat()
        Gets this PatternLayout's content format. Specified by:
        • Key: "structured" Value: "false"
        • Key: "formatType" Value: "conversion" (format uses the keywords supported by OptionConverter)
        • Key: "format" Value: provided "conversionPattern" param
        Specified by:
        getContentFormat in interface Layout<java.lang.String>
        Overrides:
        getContentFormat in class AbstractLayout<java.lang.String>
        Returns:
        Map of content format keys supporting PatternLayout
      • toSerializable

        public java.lang.String toSerializable​(LogEvent event)
        Formats a logging event to a writer.
        Parameters:
        event - logging event to be formatted.
        Returns:
        The event formatted as a String.
      • serialize

        public void serialize​(LogEvent event,
                              java.lang.StringBuilder stringBuilder)
      • encode

        public void encode​(LogEvent event,
                           ByteBufferDestination destination)
        Description copied from class: AbstractLayout
        Encodes the specified source LogEvent to some binary representation and writes the result to the specified destination.

        The default implementation of this method delegates to the Layout.toByteArray(LogEvent) method which allocates temporary objects.

        Subclasses can override this method to provide a garbage-free implementation. For text-based layouts, AbstractStringLayout provides various convenience methods to help with this:

        @Plugin(name = "MyLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
         public final class MyLayout extends AbstractStringLayout {
        
        Specified by:
        encode in interface Encoder<LogEvent>
        Overrides:
        encode in class AbstractLayout<java.lang.String>
        Parameters:
        event - the LogEvent to encode.
        destination - holds the ByteBuffer to write into.
        See Also:
        AbstractStringLayout.getStringBuilder(), AbstractStringLayout.getStringBuilderEncoder()
      • toText

        private java.lang.StringBuilder toText​(AbstractStringLayout.Serializer2 serializer,
                                               LogEvent event,
                                               java.lang.StringBuilder destination)
        Creates a text representation of the specified log event and writes it into the specified StringBuilder.

        Implementations are free to return a new StringBuilder if they can detect in advance that the specified StringBuilder is too small.

      • createPatternParser

        public static PatternParser createPatternParser​(Configuration config)
        Creates a PatternParser.
        Parameters:
        config - The Configuration or null.
        Returns:
        The PatternParser.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • createLayout

        @PluginFactory
        @Deprecated
        public static PatternLayout createLayout​(@PluginAttribute(value="pattern",defaultString="%m%n")
                                                 java.lang.String pattern,
                                                 @PluginElement("PatternSelector")
                                                 PatternSelector patternSelector,
                                                 @PluginConfiguration
                                                 Configuration config,
                                                 @PluginElement("Replace")
                                                 RegexReplacement replace,
                                                 @PluginAttribute("charset")
                                                 java.nio.charset.Charset charset,
                                                 @PluginAttribute(value="alwaysWriteExceptions",defaultBoolean=true)
                                                 boolean alwaysWriteExceptions,
                                                 @PluginAttribute("noConsoleNoAnsi")
                                                 boolean noConsoleNoAnsi,
                                                 @PluginAttribute("header")
                                                 java.lang.String headerPattern,
                                                 @PluginAttribute("footer")
                                                 java.lang.String footerPattern)
        Deprecated.
        Use newBuilder() instead. This will be private in a future version.
        Creates a pattern layout.
        Parameters:
        pattern - The pattern. If not specified, defaults to DEFAULT_CONVERSION_PATTERN.
        patternSelector - Allows different patterns to be used based on some selection criteria.
        config - The Configuration. Some Converters require access to the Interpolator.
        replace - A Regex replacement String.
        charset - The character set. The platform default is used if not specified.
        alwaysWriteExceptions - If "true" (default) exceptions are always written even if the pattern contains no exception tokens.
        noConsoleNoAnsi - If "true" (default is false) and System.console() is null, do not output ANSI escape codes
        headerPattern - The footer to place at the top of the document, once.
        footerPattern - The footer to place at the bottom of the document, once.
        Returns:
        The PatternLayout.
      • createDefaultLayout

        public static PatternLayout createDefaultLayout()
        Creates a PatternLayout using the default options. These options include using UTF-8, the default conversion pattern, exceptions being written, and with ANSI escape codes.
        Returns:
        the PatternLayout.
        See Also:
        Default conversion pattern
      • createDefaultLayout

        public static PatternLayout createDefaultLayout​(Configuration configuration)
        Creates a PatternLayout using the default options and the given configuration. These options include using UTF-8, the default conversion pattern, exceptions being written, and with ANSI escape codes.
        Parameters:
        configuration - The Configuration.
        Returns:
        the PatternLayout.
        See Also:
        Default conversion pattern