如何在 grails 2 中使用 'appender-ref' 设置 log4j appender?

How do I set up a log4j appender with 'appender-ref' in grails 2?

使用 Grails 配置 DSL,如何在 appender 上配置 appender-ref 属性?

我正在尝试将 log4j.xml 从 perf4j 翻译成 Grails 配置 DSL (Grails 2.x)。

在我试图模仿的log4j.xml文件中,有一段是这样的:

log4j.xml

<appender name="CoalescingStatistics"
          class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
    <param name="TimeSlice" value="10000"/>
    <appender-ref ref="fileAppender"/>
</appender>

我想在 Grails 中模仿这个 appender 的配置,但我无法弄清楚 <appender-ref> 标签。

这是我最近的尝试:

log4j = {
    appenders {
        //main appender for the app
        rollingFile ...

        //perf4j coalescing stats appender
        appender new AsyncCoalescingStatisticsAppender(name: "coalescingStatsAppender", timeSlice: 10000)

        //perf4j stats file appender
        rollingFile name: "perfLogFileAppender", file: "perfStats.log", layout: new PatternLayout("%m%n")
    }

    root {
        error 'stdout', 'rollingFileAppender'
    }

    info additivity: false, coalescingStatsAppender: [StopWatch.DEFAULT_LOGGER_NAME]
}

其他详细信息

这里是出处log4j.xml我在模仿:

https://web.archive.org/web/20150508124059/http://perf4j.codehaus.org/devguide.html#Using_the_log4j_Appenders_to_Generate_Real-Time_Performance_Information

我能够使用一些 Groovy 魔法让它工作:

log4j = {
    appenders {
        //...regular appenders

        //perf4j appenders
        Appender perfLogFileAppender = delegate.rollingFile name: "perfLogFileAppender", file: "perfStats.log", layout: new PatternLayout("%m%n")
        def statsAppender = new AsyncCoalescingStatisticsAppender(name: "coalescingStatsAppender", timeSlice:
            10000)
        statsAppender.addAppender(perfLogFileAppender)
        appender statsAppender
    }
    root {
        error 'stdout', 'rollingFileAppender'
    }

    info additivity: false, coalescingStatsAppender: [StopWatch.DEFAULT_LOGGER_NAME]
}

随时欢迎更优雅的解决方案。