[英]Parse an exception
i have the following log entries in the log files: 我在日志文件中有以下日志条目:
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
I want to parse only the exception and nothing else.how can i do that,may be through regular expression or String methods. 我只想解析异常,别无其他。我该怎么做,可能是通过正则表达式或String方法。
0Not entirely sure about the regular expression, but it would be something like this: It treats newlines followed by space as belonging to the log entry. 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);
}
I'd use awk to parse the log file. 我会使用awk来解析日志文件。 This will do the job 这样就可以了
awk '/java.lang.*Exception/ {
print $0;
getline;
print $0;
while (substr($1,5,1) != "-") {
print $0;
getline;
}
}' mylogfile
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.