下面是 Chainsaw 用来将模式布局转换为有用的东西的代码,仅使用 log4j API。对于 Chainsaw 的最新开发人员快照,它用于直接从 log4j xml 或属性文件 fileappender 条目构建 Chainsaw 配置。
使用由 PatternParser#parse 填充的转换器和字段来执行您想要的操作。 PatternParser 类包含在 log4j 'extras' 同伴中。
From http://svn.apache.org/repos/asf/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java http://svn.apache.org/repos/asf/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
public static String getLogFormatFromPatternLayout(String patternLayout) {
String input = OptionConverter.convertSpecialChars(patternLayout);
List converters = new ArrayList();
List fields = new ArrayList();
Map converterRegistry = null;
PatternParser.parse(input, converters, fields, converterRegistry, PatternParser.getPatternLayoutRules());
return getFormatFromConverters(converters);
}
如果您确实想要读取符合特定 PatternLayout 的日志文件并生成 log4j LoggingEvents 的东西,请参阅 LogFilePatternReceiver。 Chainsaw 使用 getLogFormatFromPatternLayout 方法将 PatternLayout 转换为接收器所需的 LogFormat。
顺便说一句,Chainsaw 的开发者快照包含许多额外的新功能 - 如果您想尝试一下,可以在这里获取:
http://people.apache.org/~sdeboy http://people.apache.org/~sdeboy