在logback中创建一个备用appender?

4
如果一个appender无法记录消息,我想捕获日志并使用“fallback appender”代替。这可能吗?类似于以下内容(我知道STDOUT不会失败):
<appender name="APPENDER" class="ch.qos.logback.core.FooAppender">
          <!-- whatever -->
</appender>

<appender name="FALLBACK_APPENDER" class="...FallbackAppender">
         <failingAppender>APPENDER</failingAppender>
</appender>
1个回答

0

可能让这个工作起来的粗鲁方式如下。

假设您的appender在com.kp.logback包中。

您有一个自定义的appender,它执行一些处理并记录在某个文件/数据库中。在执行该操作时失败了。您可以记录消息,如下所示。

public class KPAppender extends UnsynchronizedAppenderBase<ILoggingEvent>{

private static final Logger LOG = LoggerFactory.getLogger(KPAppender.class);

@Override
protected void append(ILoggingEvent eventObject) {

//try something here to process message
  if fails catch block Log message 

    if(eventObject.getLevel()== Level.DEBUG){
        LOG.debug(eventObject.getMessage());
    }

}

}

使用以下 loback.xml 配置创建另一个 Fallback appender。
    <appender name="FALLBACK_APPENDER" class="...FallbackAppender">

    </appender>

<logger name="com.kp.logback">
        <level value="trace" />
        <appender-ref ref="FALLBACK_APPENDER" />
    </logger>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接