我在日志文件中有以下日志条目:
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
我只想解析异常而不解析其他任何事情。我可以这样做,可能是通过正则表达式或String方法。
答案 0 :(得分:2)
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);
}
答案 1 :(得分:1)
我使用awk来解析日志文件。这将完成工作
awk '/java.lang.*Exception/ {
print $0;
getline;
print $0;
while (substr($1,5,1) != "-") {
print $0;
getline;
}
}' mylogfile