Class JAnsiTextRenderer

java.lang.Object
org.apache.logging.log4j.core.pattern.JAnsiTextRenderer
All Implemented Interfaces:
TextRenderer

public final class JAnsiTextRenderer extends Object implements TextRenderer
Renders an input as ANSI escaped output. Uses the JAnsi rendering syntax as the default to render a message into an ANSI escaped string. The default syntax for embedded ANSI codes is:
   @|code(,code)* text|@
 
For example, to render the message "Hello" in green, use:
   @|green Hello|@
 
To render the message "Hello" in bold and red, use:
   @|bold,red Warning!|@
 
You can also define custom style names in the configuration with the syntax:
 %message{ansi}{StyleName=value(,value)*( StyleName=value(,value)*)*}%n
 
For example:
 %message{ansi}{WarningStyle=red,bold KeyStyle=white ValueStyle=blue}%n
 
The call site can look like this:
 logger.info("@|KeyStyle {}|@ = @|ValueStyle {}|@", entry.getKey(), entry.getValue());
 
Note: This class originally copied and then heavily modified code from JAnsi's AnsiRenderer (which is licensed as Apache 2.0.)
See Also:
  • AnsiRenderer
  • Field Details

    • DefaultExceptionStyleMap

      public static final Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> DefaultExceptionStyleMap
    • DefaultMessageStyleMap

      static final Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> DefaultMessageStyleMap
    • PrefedinedStyleMaps

      private static final Map<String,Map<String,org.fusesource.jansi.AnsiRenderer.Code[]>> PrefedinedStyleMaps
    • beginToken

      private final String beginToken
    • beginTokenLen

      private final int beginTokenLen
    • endToken

      private final String endToken
    • endTokenLen

      private final int endTokenLen
    • styleMap

      private final Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> styleMap
  • Constructor Details

    • JAnsiTextRenderer

      public JAnsiTextRenderer(String[] formats, Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> defaultStyleMap)
  • Method Details

    • put

      private static void put(Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> map, String name, org.fusesource.jansi.AnsiRenderer.Code... codes)
    • getStyleMap

      public Map<String,org.fusesource.jansi.AnsiRenderer.Code[]> getStyleMap()
    • render

      private void render(org.fusesource.jansi.Ansi ansi, org.fusesource.jansi.AnsiRenderer.Code code)
    • render

      private void render(org.fusesource.jansi.Ansi ansi, org.fusesource.jansi.AnsiRenderer.Code... codes)
    • render

      private String render(String text, String... names)
      Renders the given text with the given names which can be ANSI code names or Log4j style names.
      Parameters:
      text - The text to render
      names - ANSI code names or Log4j style names.
      Returns:
      A rendered string containing ANSI codes.
    • render

      public void render(String input, StringBuilder output, String styleName) throws IllegalArgumentException
      Description copied from interface: TextRenderer
      Renders input text to an output.
      Specified by:
      render in interface TextRenderer
      Parameters:
      input - The input
      output - The output
      styleName - The style name to use to render the input on the output.
      Throws:
      IllegalArgumentException
    • render

      public void render(StringBuilder input, StringBuilder output) throws IllegalArgumentException
      Description copied from interface: TextRenderer
      Renders input text to an output.
      Specified by:
      render in interface TextRenderer
      Parameters:
      input - The input
      output - The output
      Throws:
      IllegalArgumentException
    • toCode

      private org.fusesource.jansi.AnsiRenderer.Code toCode(String name)
    • toString

      public String toString()
      Overrides:
      toString in class Object