2017-07-27 134 views
0

我想在日誌文件中發生異常之後打印所有行以及異常名稱。從開始「at XYZ.ABC.(abcabcabc java:519) 直到Truncated. see log file for complete stacktrace,線條的問題是,它也會包含**** Error Wed Jul 05 22:23:30 GMT 2017 1499293410496**** Warning Wed Jul 05 22:23:30 GMT 2017 1499293410496行。使用Java從日誌文件中讀取Stacktrace

我的代碼

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.DataInputStream; 
import java.io.FileInputStream; 
import java.io.FileWriter; 
import java.io.InputStreamReader; 



public class findException { 


    public static void main(String[] args) 
    { 
     try 
     { 
      FileInputStream fis = new FileInputStream("log path"); 
      DataInputStream dis = new DataInputStream(fis); 
      BufferedReader br = new BufferedReader(new InputStreamReader(dis)); 
      BufferedWriter bw = new BufferedWriter(new FileWriter("Trace_failed.txt")); 

      String strLine; 
      Boolean check= false; 
      int line = 0; 

      while((strLine = br.readLine()) != null) 
        { 
         if(strLine.contains("Servlet failed with Exception")          || (strLine.contains("java.lang.Exception"))         || (strLine.contains("SQLException"))) 
         { 
          check = true; 
         } 
         if(check) 
         { 
          bw.write(strLine); 
          bw.newLine(); 
          line++; 

         } 
         if(!strLine.contains("Truncated. see log file for complete stacktrace")) 
         { 
          check = false; 
          line = 0; 
         } 
        } 

      dis.close(); 
      bw.close(); 
      System.out.println("Written Successfully"); 


     } 
     catch(Exception e) 
     { 
      System.err.println("Error " + e.getMessage()); 
     } 

    } 

} 

請向右滾動書面例外。我剛纔寫其中2個。那麼我該如何刪除所有具有****Error...和* ***Warning...的行 我停止了循環,當它顯示爲Truncated. see log file for complete stacktrace 請幫助!!

回答

0

最好的解決方案是使用標準日誌記錄解決方案 - 請參閱Log4J或Logback或一些其他現成的框架。它們提供了非常好的選項來將堆棧跟蹤打印到日誌文件中。可以使用或不使用日誌框架的另一個解決方案是使用我編寫的開放源代碼庫,它提供了一個實用程序(在其他一些實用程序中),用於從異常中抽取完全或過濾出的堆棧跟蹤到字符串中。所有你需要做的是:

String stacktraceStr = TextUtils.getStacktrace(ex); 

下面是在細節何處獲取圖書館和/或它的源代碼(行家或github上),以及如何使用它解釋了文章的鏈接:Open Source Java library with stack trace filtering, Silent String parsing Unicode converter and Version comparison。查找段落「Stacktrace noise filter