Java 分析异常
我在日志文件中有以下日志条目:Java 分析异常,java,Java,我在日志文件中有以下日志条目: 2011-12-16 17:10:05,353 [http-8080-2] ERROR Log4JErrorServlet - error message java.lang.NullPointerException at test.Log4JErrorServlet.doGet(Log4JErrorServlet.java:27) at javax.servlet.http.HttpServlet.service(
2011-12-16 17:10:05,353 [http-8080-2] ERROR Log4JErrorServlet - error message
java.lang.NullPointerException
at test.Log4JErrorServlet.doGet(Log4JErrorServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
2011-12-16 17:10:05,354 [http-8080-2] FATAL Log4JErrorServlet - fatal message
我只想解析异常,不想解析其他内容。我如何才能做到这一点,可能是通过正则表达式或字符串方法。0不完全确定正则表达式,但可能是这样的: 它将后跟空格的换行符视为属于日志条目
Pattern pattern = Pattern.compile("(?s)\n\\d.*ERROR(\n |.)*");
Matcher m = tmpPat.matcher(logContent);
StringBuilder buf = new StringBuilder();
while (m.find()) {
String exc = m.group();
buf.append(exc);
}
我将使用awk解析日志文件。这就行了
awk '/java.lang.*Exception/ {
print $0;
getline;
print $0;
while (substr($1,5,1) != "-") {
print $0;
getline;
}
}' mylogfile
你想解析什么确切的信息?异常类,异常消息,两者都有?grep Exception application.log?将doGet的代码粘贴到这里,并在27行上写下注释,您在这行上得到了null指针错误line@Pratik:我认为问题在于解析日志,而不是排除异常。然而,考虑到问题中的大量细节,谁知道呢?我在文件中得到了三件事:两条日志行和一个异常。我想要的是将整个异常放在一个字符串中。这里没有其他方法可以做到这一点,可能是字符串方法可以做到这一点。类似于s=s.replaceAll?s\n\\d.*INFO | WARNING | FATAL.*;但是,应该检查。