Class JAnsiTextRenderer
- java.lang.Object
-
- org.apache.logging.log4j.core.pattern.JAnsiTextRenderer
-
- All Implemented Interfaces:
TextRenderer
public final class JAnsiTextRenderer extends java.lang.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 Summary
Fields Modifier and Type Field Description private java.lang.String
beginToken
private int
beginTokenLen
static java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>
DefaultExceptionStyleMap
(package private) static java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>
DefaultMessageStyleMap
private java.lang.String
endToken
private int
endTokenLen
private static java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>>
PrefedinedStyleMaps
private java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>
styleMap
-
Constructor Summary
Constructors Constructor Description JAnsiTextRenderer(java.lang.String[] formats, java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> defaultStyleMap)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>
getStyleMap()
private static void
put(java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> map, java.lang.String name, org.fusesource.jansi.AnsiRenderer.Code... codes)
void
render(java.lang.StringBuilder input, java.lang.StringBuilder output)
Renders input text to an output.private java.lang.String
render(java.lang.String text, java.lang.String... names)
Renders the given text with the given names which can be ANSI code names or Log4j style names.void
render(java.lang.String input, java.lang.StringBuilder output, java.lang.String styleName)
Renders input text to an output.private void
render(org.fusesource.jansi.Ansi ansi, org.fusesource.jansi.AnsiRenderer.Code code)
private void
render(org.fusesource.jansi.Ansi ansi, org.fusesource.jansi.AnsiRenderer.Code... codes)
private org.fusesource.jansi.AnsiRenderer.Code
toCode(java.lang.String name)
java.lang.String
toString()
-
-
-
Field Detail
-
DefaultExceptionStyleMap
public static final java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> DefaultExceptionStyleMap
-
DefaultMessageStyleMap
static final java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> DefaultMessageStyleMap
-
PrefedinedStyleMaps
private static final java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]>> PrefedinedStyleMaps
-
beginToken
private final java.lang.String beginToken
-
beginTokenLen
private final int beginTokenLen
-
endToken
private final java.lang.String endToken
-
endTokenLen
private final int endTokenLen
-
styleMap
private final java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> styleMap
-
-
Method Detail
-
put
private static void put(java.util.Map<java.lang.String,org.fusesource.jansi.AnsiRenderer.Code[]> map, java.lang.String name, org.fusesource.jansi.AnsiRenderer.Code... codes)
-
getStyleMap
public java.util.Map<java.lang.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 java.lang.String render(java.lang.String text, java.lang.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 rendernames
- ANSI code names or Log4j style names.- Returns:
- A rendered string containing ANSI codes.
-
render
public void render(java.lang.String input, java.lang.StringBuilder output, java.lang.String styleName) throws java.lang.IllegalArgumentException
Description copied from interface:TextRenderer
Renders input text to an output.- Specified by:
render
in interfaceTextRenderer
- Parameters:
input
- The inputoutput
- The outputstyleName
- The style name to use to render the input on the output.- Throws:
java.lang.IllegalArgumentException
-
render
public void render(java.lang.StringBuilder input, java.lang.StringBuilder output) throws java.lang.IllegalArgumentException
Description copied from interface:TextRenderer
Renders input text to an output.- Specified by:
render
in interfaceTextRenderer
- Parameters:
input
- The inputoutput
- The output- Throws:
java.lang.IllegalArgumentException
-
toCode
private org.fusesource.jansi.AnsiRenderer.Code toCode(java.lang.String name)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-