in src/main/java/org/apache/log4j/pattern/ExtrasPatternParser.java [547:598]
private static int finalizeConverter(
char c, String pattern, int i,
final StringBuffer currentLiteral, final ExtrasFormattingInfo formattingInfo,
final Map converterRegistry, final Map rules, final List patternConverters,
final List formattingInfos) {
StringBuffer convBuf = new StringBuffer();
i = extractConverter(c, pattern, i, convBuf, currentLiteral);
String converterId = convBuf.toString();
List options = new ArrayList();
i = extractOptions(pattern, i, options);
PatternConverter pc =
createConverter(
converterId, currentLiteral, converterRegistry, rules, options);
if (pc == null) {
StringBuffer msg;
if (converterId.length() == 0) {
msg =
new StringBuffer("Empty conversion specifier starting at position ");
} else {
msg = new StringBuffer("Unrecognized conversion specifier [");
msg.append(converterId);
msg.append("] starting at position ");
}
msg.append(Integer.toString(i));
msg.append(" in conversion pattern.");
LogLog.error(msg.toString());
patternConverters.add(
new LiteralPatternConverter(currentLiteral.toString()));
formattingInfos.add(ExtrasFormattingInfo.getDefault());
} else {
patternConverters.add(pc);
formattingInfos.add(formattingInfo);
if (currentLiteral.length() > 0) {
patternConverters.add(
new LiteralPatternConverter(currentLiteral.toString()));
formattingInfos.add(ExtrasFormattingInfo.getDefault());
}
}
currentLiteral.setLength(0);
return i;
}