java - 可以处理java异常的正则表达式

标签 java regex log4j

我正在尝试为 log4j 编写一个日志解析器。我有一个适用于普通消息的正则表达式,但是当它收到一条抛出异常的消息时,它只会在第一行显示内容,并且不会匹配堆栈跟踪。

如何编写可以处理跨多行的 Java 异常的正则表达式?

这是我在 java 中使用的当前正则表达式:

^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.+)$

这是一条正常的日志消息:

2012-01-25 20:10:03,480 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler: nodeUpdate: example.com:1 clusterResources: memory: 1

这是一个示例异常日志消息:

2012-01-25 00:03:59,565 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint
java.io.IOException: Inconsistent checkpoint fields.
LV = -1 namespaceID = 1 cTime = 0 ; clusterId = CID-1 ; blockpoolId = BP-
Expecting respectively: -1; 1; 0; CID-1; BP-1
        at org.apache.hadoop.hdfs.server.namenode.CheckpointSignature.validateStorageInfo(CheckpointSignature.java:111)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:510)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:381)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$2.run(SecondaryNameNode.java:344)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:337)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:341)
        at java.lang.Thread.run(Thread.java:619)

最佳答案

应该这样做:

(.*\\bERROR\\b.*)\\r?\\n(.*\\r?\\n)*(.*\\bat\\b.*)*(\\d{1,4}\\)\\r?\\n)

我假设您正在将日志文件读入 CharSequence 并将其传递给 Java 中的模式匹配器,而不是逐行读取文件。

关于java - 可以处理java异常的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996131/

相关文章:

JavaFX 添加自定义 ViewCell 未出现

regex - 在 postgreSQL 中使用正则表达式验证列

python解析: what file format uses `=>` OR how to read custom input files to dict

log4j - 在Log4J中,为什么ConversionPattern中的%C使用AsyncAppender打印 '?'(问号)?

java - 使用 Java 属性的 Log4j 手动配置

java - 如何在 Java 中读取/写入进程

java.lang.异常 : No Certificate file specified or invalid file format

java - 自定义 JComboBox 上箭头的位置(位于底部中心)

javascript - 如何测试 JavaScript 正则表达式中的某个字符串仅包含某些类型的 HTML 内容?

java - 在负载下忽略日志指令的自适应 log4j appender