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:
    • conversionPattern

      private final String conversionPattern
      Conversion pattern.
    • patternSelector

      private final PatternSelector patternSelector
    • eventSerializer

      private final AbstractStringLayout.Serializer eventSerializer
  • Constructor Details

    • PatternLayout

      private PatternLayout(Configuration config, RegexReplacement replace, String eventPattern, PatternSelector patternSelector, Charset charset, boolean alwaysWriteExceptions, boolean disableAnsi, boolean noConsoleNoAnsi, String headerPattern, 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 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 -
      replace -
      pattern -
      defaultPattern -
      patternSelector -
      alwaysWriteExceptions -
      noConsoleNoAnsi -
      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 {
      
      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:
    • toText

      private StringBuilder toText(AbstractStringLayout.Serializer2 serializer, LogEvent event, 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 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()