2011-12-16 162 views
-1

我在日誌文件中的以下日誌條目:解析異常

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 

我要來解析異常,並沒有什麼else.how我可以做到這一點,可能是通過正則表達式或字符串的方法。

+0

什麼確切的信息,你想解析?異常類,異常消息都是? – yatskevich 2011-12-16 12:15:44

+0

`grep「異常」application.log`? – miku 2011-12-16 12:16:30

+0

在這裏粘貼doGet()的代碼,並在27行寫註釋,你在那一行上得到了空指針錯誤 – Pratik 2011-12-16 12:18:00

回答

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

我想用awk來解析日誌文件。這將做這項工作

awk '/java.lang.*Exception/ { 
print $0; 
getline; 
print $0; 
while (substr($1,5,1) != "-") { 
    print $0; 
    getline; 
    } 
}' mylogfile