2016-05-23 98 views
-1

我試圖阻止我的Java應用程序控制臺中的每個異常消息,現在我只是不知道該怎麼做。Java控制檯記錄器異常處理

我試圖使用java.util.logging.Logger,並且我向他添加了Handler,它工作良好,但Handler沒有像「cancelPublish」這樣的函數。

在Java中有沒有任何類與發送日誌之前執行的方法,並具有作爲參數異常對象,並在其中我可以停止「打印」日誌控制檯,或將他替換爲我的字符串?

我想發送我所有的異常(像這樣低)到雲和異常日誌替換像「錯誤ID:XX」的東西。

enter image description here

接下來,我需要得到異常對象,併發送至數據庫:異常名稱,是否存在異常信息和錯誤時拋出的痕跡。

getLogger().addHandler(new SH()); 

private class SH extends StreamHandler { 

    @Override 
    public synchronized void publish(LogRecord record) { 

     if (record.getLevel().intValue() > Level.INFO.intValue()) { 
      // I can there send that log to database 
     } 
    } 
} 

我想這樣的事情上,但不是每個日誌與級別WARN,或者錯誤是例外,在那裏像?:

getLogger().addExceptionListener(new ExceptionListener() { 
     public void onCheck(ExceptionEvent e) { 
      //First method which I want 
      e.getException(); 

      //and second 
      e.cancelPublish(); 
     } 
    }); 

Java方法有什麼接近,在Java中?

+0

你需要證明你有什麼到目前爲止已經試過。請參閱[如何提出一個好問題](/ help/how-to-ask)和[mcve] – Tibrogargan

+0

如果有幫助,我添加了圖片。 – TheTonsOfCode

+0

你有任何代碼可以告訴我們嗎?此外,您可能希望查看觀察者或用戶模式,並在記錄器周圍添加圖層,並使用您用於分析和取消或記錄的代碼。 – Underbalanced

回答

0

我relsolved它通過添加過濾器,以我的記錄器:

getLogger().setFilter(new Filter() { 
     @Override 
     public boolean isLoggable(LogRecord record) { 
      //There I do what I want... 
      return record.getThrown() != null; 
     } 
    });