Class PatternParser
- java.lang.Object
-
- org.apache.logging.log4j.core.pattern.PatternParser
-
public final class PatternParser extends java.lang.ObjectMost of the work of thePatternLayoutclass 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 classPatternParser.ParserStateThe states the parser can be in while parsing the pattern.
-
Field Summary
Fields Modifier and Type Field Description private static intBUF_SIZEprivate Configurationconfigprivate java.util.Map<java.lang.String,java.lang.Class<PatternConverter>>converterRulesprivate static intDECIMAL(package private) static java.lang.StringDISABLE_ANSIprivate static charESCAPE_CHAREscape character for format specifier.private static LoggerLOGGER(package private) static java.lang.StringNO_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 booleanareValidNewInstanceParameters(java.lang.Class<?>[] parameterTypes)LOG4J2-2564: Returns true if all method parameters are valid for injection.private PatternConvertercreateConverter(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 intextractConverter(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 intextractOptions(java.lang.String pattern, int start, java.util.List<java.lang.String> options)Extract options.private intfinalizeConverter(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.private LogEventPatternConverterliteralPattern(java.lang.String literal, boolean convertBackslashes)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)voidparse(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean noConsoleNoAnsi, boolean convertBackslashes)Parse a format specifier.voidparse(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 ornull.converterKey- The key to lookup the converters.expected- The expected base Class of each Converter ornull.
-
PatternParser
public PatternParser(Configuration config, java.lang.String converterKey, java.lang.Class<?> expectedClass, java.lang.Class<?> filterClass)
Constructor.- Parameters:
config- The current Configuration ornull.converterKey- The key to lookup the converters.expectedClass- The expected base Class of each Converter ornull.filterClass- Filter the returned plugins after calling the plugin manager, can benull.
-
-
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.
-
literalPattern
private LogEventPatternConverter literalPattern(java.lang.String literal, boolean convertBackslashes)
-
-