简体   繁体   English

在logback中创建后备附加程序?

[英]Create a fallback appender in logback?

In case an appender fails to log a message, I'd like to catch the log and use "fallback appender" instead. 万一附加程序无法记录消息,我想捕获日志并改用“后备附加程序”。 Is that possible? 那可能吗?

Something like this (I know STDOUT wont fail) 这样的事情(我知道STDOUT不会失败)

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

<appender name="FALLBACK_APPENDER" class="...FallbackAppender">
         <failingAppender>APPENDER</failingAppender>
</appender>

May be rude way of making this work is as follows. 进行此工作的粗鲁方式如下。

Say suppose your appender is in package com.kp.logback. 假设您的附加程序位于com.kp.logback包中。

You have custom appender which does some processing and logs on some file/db. 您具有自定义附加程序,该附加程序会进行一些处理并登录一些文件/数据库。 while doing that operation it failed. 在执行该操作时失败了。 you can log the messsage, as below. 您可以记录以下消息。

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());
    }

}

}

Create another Fallback appender with loback.xml configuration as below. 如下所示,使用loback.xml配置创建另一个Fallback追加程序。

    <appender name="FALLBACK_APPENDER" class="...FallbackAppender">

    </appender>

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM