Java log4j异常处理

Java log4j异常处理,java,exception,log4j,Java,Exception,Log4j,我是Java世界的新手 我们有一个Java应用程序,它提供了一种特定类型的异常。有没有办法,我们可以让log4j对特定的方式做出反应。拥有自己的appender,比如MQ连接异常,我们需要向特定组发送电子邮件 我们正在从intern使用MQ的应用程序中定制Java,并通过我们需要发送电子邮件的异常进行定制 我实际上是在寻找appender的样子是的,你走对了。实现您自己的Appender,只记录与您想要记录的内容相匹配的内容 或者,使用现有的附加器(例如)并实施/利用现有附加器来限制发送到那里的

我是Java世界的新手

我们有一个Java应用程序,它提供了一种特定类型的异常。有没有办法,我们可以让log4j对特定的方式做出反应。拥有自己的appender,比如MQ连接异常,我们需要向特定组发送电子邮件

我们正在从intern使用MQ的应用程序中定制Java,并通过我们需要发送电子邮件的异常进行定制


我实际上是在寻找appender的样子是的,你走对了。实现您自己的Appender,只记录与您想要记录的内容相匹配的内容


或者,使用现有的附加器(例如)并实施/利用现有附加器来限制发送到那里的内容。

是的,您走对了方向。实现您自己的Appender,只记录与您想要记录的内容相匹配的内容


或者,使用现有的附加程序(例如)并实现/利用现有的附加程序来限制发送到那里的内容。

如果您的意思是只想在事件包含某类异常时附加事件,则可以编写筛选器。大致如下(未经测试的代码!):


如果您的意思是仅当事件包含某类异常时才想附加事件,那么可以编写一个筛选器。大致如下(未经测试的代码!):


我想他是在问他是否能捕获异常,而不是日志发送电子邮件…@Nix:email是一种日志记录形式,就像其他任何形式一样。有一个SMTPAppender可以发送电子邮件。@MarkPeters如果appender是异步的呢?它会一直捕获异常并发送电子邮件吗?@guarav:上下文可能会提出一个新问题,但对于日志框架,它们通常不会捕获异常,作为开发人员,您会捕获异常,然后调用类似于
logger.error(“XYZ操作失败”,ex)
。然后由日志框架来决定如何处理为日志记录器和配置传递给它的异常。我想他是在问是否可以捕获异常,而不是日志发送电子邮件…@Nix:email是日志的一种形式,就像其他任何形式一样。有一个SMTPAppender可以发送电子邮件。@MarkPeters如果appender是异步的呢?它会一直捕获异常并发送电子邮件吗?@guarav:上下文可能会提出一个新问题,但对于日志框架,它们通常不会捕获异常,作为开发人员,您会捕获异常,然后调用类似于
logger.error(“XYZ操作失败”,ex)
。然后,由日志框架决定如何处理为日志记录器和配置传递给它的异常。
public final class ExceptionFilter extends org.apache.log4j.spi.Filter {

  private volatile String type;

  public void setType(String type) {
    this.type = type;
  }

  public String getType()
    return type;
  }

  public int decide(LoggingEvent evt) {
    Throwable t = evt.getThrowableInformation().getThrowable();
    if ((t != null) && t.getName().equals(type))
      return NEUTRAL;
    else
      return DENY;
  }

}