2011-12-16 2 views
-1

j'ai les entrées de journal suivantes dans les fichiers journaux:Parse une exception

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 

Je veux analyser que l'exception et rien else.how que je peux le faire, peut-être par l'expression régulière ou les méthodes de chaînes.

+0

quelle information exacte voulez-vous analyser? Classe d'exception, message d'exception, les deux? – yatskevich

+0

'grep" Exception "application.log'? – miku

+0

coller le code de doGet() ici et écrire le commentaire sur 27 ligne vous avez l'erreur nullpointer sur cette ligne – Pratik

Répondre

2

0Pas vraiment sûr de l'expression régulière, mais ce serait quelque chose comme ceci: Il traite les nouvelles lignes suivies de l'espace comme appartenant à l'entrée du journal.

  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); 
      } 
+0

n'est pas ici toute autre méthode pour ce faire, peut-être des méthodes de chaîne pour ce faire . – Rookie

+0

Quelque chose comme s = s.replaceAll ("(? S) (\ n \\ d. * (INFO | AVERTISSEMENT | FATAL). *", ""); Doit être vérifié cependant –

1

J'utiliserais awk pour analyser le fichier journal. Cela fera l'affaire

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

Je veux faire cela en Java . – Rookie