如何使用groovy配置向我的Custom Appender添加多个appender?

时间:2011-09-01 22:32:36

标签: xml logging groovy log4j logback

我正在将我的logback.xml文件转换为groovy,并提出了将appender添加到我的自定义appender的挑战!

目前我这样做:

<appender name="MyCustomAppender" class="url.MyCustomAppender">
    <param name="BufferSize" value="10000"/>
    <param name="Blocking" value="true"/>
    <appender-ref ref="FILE"/>
    <!-- <appender-ref ref="CONSOLE"/> -->
    <appender-ref ref="CONSOLE_ERR"/>
</appender>

我用groovy尝试了类似的东西,但它失败了:

   appender("MyCustomAppender", MyCustomAppender) {
    BufferSize = 10000
    Blocking = true
    appender-ref('ref':"CONSOLE_ERR");
        appender-ref('ref':"FILE"); 
   }

我无法更改自定义appender,因为它在共享代码中,因此这不是解决方案。我只想做与xml中完全相同的事情,但是在groovy中。

1 个答案:

答案 0 :(得分:2)

试试这个:

def consoleErrAppender = appenderList.find { it -> it.name == "CONSOLE_ERR" }
def fileAppender = appenderList.find { it -> it.name == "FILE" }

appender("MyCustomAppender", MyCustomAppender) {
    BufferSize = 10000
    Blocking = true
    appender = consoleErrAppender
    appender = fileAppender    
}

我认为您的MyCustomAppender实现了AppenderAttachable界面(或者至少有public void addAppender(Appender<E> newAppender)方法。)