Java控制台记录器异常处理

问题描述:

我试图阻止我的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

我relsolved它通过添加过滤器,以我的记录器:

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