简体   繁体   English

解析异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM