Class PatternParser
- java.lang.Object
-
- org.apache.logging.log4j.core.pattern.PatternParser
-
public final class PatternParser extends java.lang.Object
Most of the work of thePatternLayout
class is delegated to the PatternParser class.It is this class that parses conversion patterns and creates a chained list of
PatternConverters
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PatternParser.ParserState
The states the parser can be in while parsing the pattern.
-
Field Summary
Fields Modifier and Type Field Description private static int
BUF_SIZE
private Configuration
config
private java.util.Map<java.lang.String,java.lang.Class<PatternConverter>>
converterRules
private static int
DECIMAL
(package private) static java.lang.String
DISABLE_ANSI
private static char
ESCAPE_CHAR
Escape character for format specifier.private static Logger
LOGGER
(package private) static java.lang.String
NO_CONSOLE_NO_ANSI
-
Constructor Summary
Constructors Constructor Description PatternParser(java.lang.String converterKey)
Constructor.PatternParser(Configuration config, java.lang.String converterKey, java.lang.Class<?> expected)
Constructor.PatternParser(Configuration config, java.lang.String converterKey, java.lang.Class<?> expectedClass, java.lang.Class<?> filterClass)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static boolean
areValidNewInstanceParameters(java.lang.Class<?>[] parameterTypes)
LOG4J2-2564: Returns true if all method parameters are valid for injection.private PatternConverter
createConverter(java.lang.String converterId, java.lang.StringBuilder currentLiteral, java.util.Map<java.lang.String,java.lang.Class<PatternConverter>> rules, java.util.List<java.lang.String> options, boolean disableAnsi, boolean noConsoleNoAnsi)
Creates a new PatternConverter.private static int
extractConverter(char lastChar, java.lang.String pattern, int start, java.lang.StringBuilder convBuf, java.lang.StringBuilder currentLiteral)
Extracts the converter identifier found at the given start position.private static int
extractOptions(java.lang.String pattern, int start, java.util.List<java.lang.String> options)
Extract options.private int
finalizeConverter(char c, java.lang.String pattern, int start, java.lang.StringBuilder currentLiteral, FormattingInfo formattingInfo, java.util.Map<java.lang.String,java.lang.Class<PatternConverter>> rules, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
Processes a format specifier sequence.java.util.List<PatternFormatter>
parse(java.lang.String pattern)
java.util.List<PatternFormatter>
parse(java.lang.String pattern, boolean alwaysWriteExceptions, boolean noConsoleNoAnsi)
java.util.List<PatternFormatter>
parse(java.lang.String pattern, boolean alwaysWriteExceptions, boolean disableAnsi, boolean noConsoleNoAnsi)
void
parse(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean noConsoleNoAnsi, boolean convertBackslashes)
Parse a format specifier.void
parse(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
Parse a format specifier.
-
-
-
Field Detail
-
DISABLE_ANSI
static final java.lang.String DISABLE_ANSI
- See Also:
- Constant Field Values
-
NO_CONSOLE_NO_ANSI
static final java.lang.String NO_CONSOLE_NO_ANSI
- See Also:
- Constant Field Values
-
ESCAPE_CHAR
private static final char ESCAPE_CHAR
Escape character for format specifier.- See Also:
- Constant Field Values
-
LOGGER
private static final Logger LOGGER
-
BUF_SIZE
private static final int BUF_SIZE
- See Also:
- Constant Field Values
-
DECIMAL
private static final int DECIMAL
- See Also:
- Constant Field Values
-
config
private final Configuration config
-
converterRules
private final java.util.Map<java.lang.String,java.lang.Class<PatternConverter>> converterRules
-
-
Constructor Detail
-
PatternParser
public PatternParser(java.lang.String converterKey)
Constructor.- Parameters:
converterKey
- The type of converters that will be used.
-
PatternParser
public PatternParser(Configuration config, java.lang.String converterKey, java.lang.Class<?> expected)
Constructor.- Parameters:
config
- The current Configuration.converterKey
- The key to lookup the converters.expected
- The expected base Class of each Converter.
-
PatternParser
public PatternParser(Configuration config, java.lang.String converterKey, java.lang.Class<?> expectedClass, java.lang.Class<?> filterClass)
Constructor.- Parameters:
config
- The current Configuration.converterKey
- The key to lookup the converters.expectedClass
- The expected base Class of each Converter.filterClass
- Filter the returned plugins after calling the plugin manager.
-
-
Method Detail
-
parse
public java.util.List<PatternFormatter> parse(java.lang.String pattern)
-
parse
public java.util.List<PatternFormatter> parse(java.lang.String pattern, boolean alwaysWriteExceptions, boolean noConsoleNoAnsi)
-
parse
public java.util.List<PatternFormatter> parse(java.lang.String pattern, boolean alwaysWriteExceptions, boolean disableAnsi, boolean noConsoleNoAnsi)
-
extractConverter
private static int extractConverter(char lastChar, java.lang.String pattern, int start, java.lang.StringBuilder convBuf, java.lang.StringBuilder currentLiteral)
Extracts the converter identifier found at the given start position.After this function returns, the variable i will point to the first char after the end of the converter identifier.
If i points to a char which is not a character acceptable at the start of a unicode identifier, the value null is returned.
- Parameters:
lastChar
- last processed character.pattern
- format string.start
- current index into pattern format.convBuf
- buffer to receive conversion specifier.currentLiteral
- literal to be output in case format specifier in unrecognized.- Returns:
- position in pattern after converter.
-
extractOptions
private static int extractOptions(java.lang.String pattern, int start, java.util.List<java.lang.String> options)
Extract options.- Parameters:
pattern
- conversion pattern.start
- start of options.options
- array to receive extracted options- Returns:
- position in pattern after options.
-
parse
public void parse(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean noConsoleNoAnsi, boolean convertBackslashes)
Parse a format specifier.- Parameters:
pattern
- pattern to parse.patternConverters
- list to receive pattern converters.formattingInfos
- list to receive field specifiers corresponding to pattern converters.noConsoleNoAnsi
- do not do not output ANSI escape codes ifSystem.console()
convertBackslashes
- iftrue
, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).
-
parse
public void parse(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
Parse a format specifier.- Parameters:
pattern
- pattern to parse.patternConverters
- list to receive pattern converters.formattingInfos
- list to receive field specifiers corresponding to pattern converters.disableAnsi
- do not output ANSI escape codesnoConsoleNoAnsi
- do not do not output ANSI escape codes ifSystem.console()
convertBackslashes
- iftrue
, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).
-
createConverter
private PatternConverter createConverter(java.lang.String converterId, java.lang.StringBuilder currentLiteral, java.util.Map<java.lang.String,java.lang.Class<PatternConverter>> rules, java.util.List<java.lang.String> options, boolean disableAnsi, boolean noConsoleNoAnsi)
Creates a new PatternConverter.- Parameters:
converterId
- converterId.currentLiteral
- literal to be used if converter is unrecognized or following converter if converterId contains extra characters.rules
- map of stock pattern converters keyed by format specifier.options
- converter options.disableAnsi
- do not output ANSI escape codesnoConsoleNoAnsi
- do not do not output ANSI escape codes ifSystem.console()
- Returns:
- converter or null.
-
areValidNewInstanceParameters
private static boolean areValidNewInstanceParameters(java.lang.Class<?>[] parameterTypes)
LOG4J2-2564: Returns true if all method parameters are valid for injection.
-
finalizeConverter
private int finalizeConverter(char c, java.lang.String pattern, int start, java.lang.StringBuilder currentLiteral, FormattingInfo formattingInfo, java.util.Map<java.lang.String,java.lang.Class<PatternConverter>> rules, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
Processes a format specifier sequence.- Parameters:
c
- initial character of format specifier.pattern
- conversion patternstart
- current position in conversion pattern.currentLiteral
- current literal.formattingInfo
- current field specifier.rules
- map of stock pattern converters keyed by format specifier.patternConverters
- list to receive parsed pattern converter.formattingInfos
- list to receive corresponding field specifier.disableAnsi
- do not output ANSI escape codesnoConsoleNoAnsi
- do not do not output ANSI escape codes ifSystem.console()
convertBackslashes
- iftrue
, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).- Returns:
- position after format specifier sequence.
-
-