Regex 用于提取异常消息字段的正则表达式(使用rsyslog作为消息源)

Regex 用于提取异常消息字段的正则表达式(使用rsyslog作为消息源),regex,exception,rsyslog,Regex,Exception,Rsyslog,我正在创建日志解析器来解析来自不同源(如rsyslog、logback扩展、nxlog等)的日志消息 我必须提取异常消息字段。但我在为下面的测试字符串生成正则表达式时卡住了 测试字符串: 2014-10-16 01:32:22,780 ERROR main Sample.main - java.lang.NullPointerException: Sample Log4j Exception at Sample.errorLevel3(Sample.java:35) at Sam

我正在创建日志解析器来解析来自不同源(如rsyslog、logback扩展、nxlog等)的日志消息

我必须提取异常消息字段。但我在为下面的测试字符串生成正则表达式时卡住了

测试字符串:

2014-10-16 01:32:22,780 ERROR main Sample.main - java.lang.NullPointerException: Sample Log4j Exception
    at Sample.errorLevel3(Sample.java:35)
    at Sample.errorLevel2(Sample.java:31)
    at Sample.errorLevel1(Sample.java:27)
    at Sample.main(Sample.java:16)
2014-10-16 01:32:22,780
java.lang.NullPointerException
Sample Log4j Exception
----------
Sample.errorLevel3
Sample.java
35
----------
Sample.errorLevel2
Sample.java
31
----------
Sample.errorLevel1
Sample.java
27
注意:
\n
\t
rsyslog

预期匹配:

2014-10-16 01:32:22,780 ERROR main Sample.main - java.lang.NullPointerException: Sample Log4j Exception
    at Sample.errorLevel3(Sample.java:35)
    at Sample.errorLevel2(Sample.java:31)
    at Sample.errorLevel1(Sample.java:27)
    at Sample.main(Sample.java:16)
2014-10-16 01:32:22,780
java.lang.NullPointerException
Sample Log4j Exception
----------
Sample.errorLevel3
Sample.java
35
----------
Sample.errorLevel2
Sample.java
31
----------
Sample.errorLevel1
Sample.java
27

在测试字符串“#012#011”中用作\r\n。Rsyslog将新行转换为代码#012#011我找到了用于提取java堆栈跟踪消息的正则表达式字段(?:\s+at([^(+])([^:+):(\d+))它与字段匹配:Sample.errorLevel3 Sample.java 35 Sample.errorLevel2 Sample.java 31 Sample.errorLevel1 Sample.java 27#012、#011分别是字符LF和制表符的八进制代码。Add
([-\d]+[\d:,]+)
到regex from.谢谢@Mariano.我使用rsyslog作为日志源。rsyslog将换行符转换为八进制代码#012#011(LF,TAB)。实际的日志消息是:
2014-10-16 01:32:22780 ERROR main Sample.main-java.lang.nullpointer异常:Sample Log4j异常#012#011at Sample.errorLevel3(Sample.java:35)#012#011at Sample.errorLevel2(Sample.java:31)#012#011at Sample.errorLevel1(Sample.java:27)#012#011at Sample.main(Sample.java:16)#012
日志消息中没有新行。