如何使用
正则表达式解析每个事件可以包含多行的 log4j 1 日志文件?(即.java异常堆栈跟踪)
示例日志4j 日志输出
图案布局
%r [%t] %-5p %c{2} %x - %m%n
176 [main] INFO examples.Sort - Populating an array of 2 elements in reverse order.
225 [main] INFO examples.SortAlgo - Entered the sort method.
262 [main] DEBUG SortAlgo.OUTER i=1 - Outer loop.
276 [main] DEBUG SortAlgo.SWAP i=1 j=0 - Swapping intArray[0] = 1 and intArray[1] = 0
290 [main] DEBUG SortAlgo.OUTER i=0 - Outer loop.
304 [main] INFO SortAlgo.DUMP - Dump of interger array:
317 [main] INFO SortAlgo.DUMP - Element [0] = 0
331 [main] INFO SortAlgo.DUMP - Element [1] = 1
343 [main] INFO examples.Sort - The next log statement should be an error message.
346 [main] ERROR SortAlgo.DUMP - Tried to dump an uninitialized array.
at org.log4j.examples.SortAlgo.dump(SortAlgo.java:58)
at org.log4j.examples.Sort.main(Sort.java:64)
467 [main] INFO examples.Sort - Exiting main method. <-- regex fails to capture last event
此正则表达式无法捕获最后一个事件
标志:/GSMX
^(?<elapsed>d+?) s
[(?<thread>.+?)] s
(?<priority>TRACE|DEBUG|INFO|WARN|ERROR|FATAL) s
(?<category>.+?) s - s
(?<msg>
(.+?$[n])+?
(
$(?![rn])(?#EOF)
|
(?=d+? s [ .+? ] s (TRACE|DEBUG|INFO|WARN|ERROR|FATAL) s (.+?) s -)
)
)
我知道 log4j 2 可以编码,但我还没有找到换成新版本的方法。
最后确定了
正则表达式:
(?smx)
^(?<elapsed>d+?) s
[(?<thread>.+?)] s
(?<priority>TRACE|DEBUG|INFO|WARN|ERROR|FATAL) s
(?<category>.+?) s - s
(?<msg>
(.+?)
(
$(?![rn]) (?#EOF)
|
(?=^d+? s [ .+? ] s (TRACE|DEBUG|INFO|WARN|ERROR|FATAL) s (.+?) s -)
)
)