在回调中创建回退追加程序



如果追加器无法记录消息,我想捕获日志并使用"回退追加器"。这可能吗?

像这样的东西(我知道STDOUT不会失败)

<appender name="APPENDER" class="ch.qos.logback.core.FooAppender">
          <!-- whatever -->
</appender>
<appender name="FALLBACK_APPENDER" class="...FallbackAppender">
         <failingAppender>APPENDER</failingAppender>
</appender>

可能粗鲁的制作方式如下。

假设您的追加器在包 com.kp.logback 中。

您有自定义追加器,它可以执行一些处理并记录在某些文件/数据库上。 在执行此操作时,它失败了。 您可以记录消息,如下所示。

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 配置创建另一个回退追加器,如下所示。

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

最新更新