2011-09-01 56 views
2

我正在将我的logback.xml文件转换为groovy,并面临将appender添加到我的自定义appender的挑战!如何使用groovy配置将多个appender添加到我的Custom 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中。

回答

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)方法)。

+0

嘿谢谢!工作! – Raj