链锯日志格式模式语法

时间:2012-05-22 11:18:16

标签: log4j apache-chainsaw

我们有一个log4j文件,其格式如下:

@|%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{Machine}|%X{CorrelationId}|%X{Sender}|%X{Receiver}|%-5p|%X{Runtime}|%X{ClientUser}|%c|%M|%L|%m%n

我使用以下模式创建了一个LogFilePatternReceiver:

@|TIMESTAMP|PROP(MACHINE)|PROP(CORRELATIONID)|PROP(SENDER)|PROP(RECEIVER)|LEVEL|PROP(RUNTIME)|PROP(CLIENTUSER)|CLASS|METHOD|LINE|MESSAGE

但是当我启动那个接收器时,我收到一个错误:

java.lang.IllegalArgumentException: invalid expression: 
    at org.apache.log4j.rule.ExpressionRule$PostFixExpressionCompiler.compileExpression(ExpressionRule.java:132)
    at org.apache.log4j.rule.ExpressionRule.getRule(ExpressionRule.java:64)
    at org.apache.log4j.rule.ExpressionRule.getRule(ExpressionRule.java:56)
    at org.apache.log4j.varia.LogFilePatternReceiver.initialize(LogFilePatternReceiver.java:557)
    at org.apache.log4j.varia.LogFilePatternReceiver$1.run(LogFilePatternReceiver.java:801)
    at java.lang.Thread.run(Unknown Source)

regexp is @|(\w+-\w+-\w+ \w+:\w+:\w+.\w+)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+?)|(.+)

我真的没看到错误在哪里?有什么输入?对于非标准列,我可以使用“PROP(...)”关键字吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以将PROP关键字用于您自己的列..

你能试试Chainsaw的最新开发者快照吗?它可以解析包含FileAppender条目的log4j.xml或log4j.properties配置,并构建一个匹配的Chainsaw配置来处理它。

此处提供快照......新版本还有许多新功能:

http://people.apache.org/~sdeboy

通常会让人兴奋的是时间戳格式和特殊字符,但我在这里看不到任何奇怪的内容,因此请查看最新的开发人员快照是否有帮助。

斯科特