Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分析异常_Java - Fatal编程技术网

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.*;但是,应该检查。