Class PatternLayout

All Implemented Interfaces:
LocationAware, Layout<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 Details

    • DEFAULT_CONVERSION_PATTERN

      public static final 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:
    • TTCC_CONVERSION_PATTERN

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

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

      public static final String KEY
      Key to identify pattern converters.
      See Also:
  • Method Details

    • newSerializerBuilder

      public static PatternLayout.SerializerBuilder newSerializerBuilder()
    • requiresLocation

      public boolean requiresLocation()
      Specified by:
      requiresLocation in interface LocationAware
      Overrides:
      requiresLocation in class AbstractStringLayout
    • createSerializer

      @Deprecated public static AbstractStringLayout.Serializer createSerializer(Configuration configuration, RegexReplacement replace, String pattern, String defaultPattern, PatternSelector patternSelector, boolean alwaysWriteExceptions, boolean noConsoleNoAnsi)
      Deprecated.
      Deprecated, use newSerializerBuilder() instead.
      Parameters:
      configuration - the current configuration
      replace - Allows portions of the resulting String to be replaced.
      pattern - the current pattern
      defaultPattern - the default pattern
      patternSelector - Allows different patterns to be used with the PatternLayout based on some selection criteria.
      alwaysWriteExceptions - To always write exceptions even if the pattern contains no exception conversions.
      noConsoleNoAnsi - Do not output ANSI escape codes if System.console() is null.
      Returns:
      a new Serializer
    • getConversionPattern

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

      public Map<String,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<String>
      Overrides:
      getContentFormat in class AbstractLayout<String>
      Returns:
      Map of content format keys supporting PatternLayout
    • toSerializable

      public 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, 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 {
           @Override
           public void encode(LogEvent event, ByteBufferDestination destination) {
               StringBuilder text = getStringBuilder();
               convertLogEventToText(event, text);
               getStringBuilderEncoder().encode(text, destination);
           }
      
           private void convertLogEventToText(LogEvent event, StringBuilder destination) {
               ... // append a text representation of the log event to the StringBuilder
           }
       }
       
      Specified by:
      encode in interface Encoder<LogEvent>
      Overrides:
      encode in class AbstractLayout<String>
      Parameters:
      event - the LogEvent to encode.
      destination - holds the ByteBuffer to write into.
      See Also:
    • createPatternParser

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

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

      @PluginFactory @Deprecated public static PatternLayout createLayout(@PluginAttribute(value="pattern",defaultString="%m%n") String pattern, @PluginElement("PatternSelector") PatternSelector patternSelector, @PluginConfiguration Configuration config, @PluginElement("Replace") RegexReplacement replace, @PluginAttribute("charset") Charset charset, @PluginAttribute(value="alwaysWriteExceptions",defaultBoolean=true) boolean alwaysWriteExceptions, @PluginAttribute("noConsoleNoAnsi") boolean noConsoleNoAnsi, @PluginAttribute("header") String headerPattern, @PluginAttribute("footer") 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:
    • 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:
    • newBuilder

      @PluginBuilderFactory public static PatternLayout.Builder newBuilder()
      Creates a builder for a custom PatternLayout.
      Returns:
      a PatternLayout builder.
    • getEventSerializer

      public AbstractStringLayout.Serializer getEventSerializer()