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

时间:2015-11-20 17:44:45

标签: grails logging log4j config perf4j

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

我正在尝试将perf4j中的log4j.xml转换为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

1 个答案:

答案 0 :(得分:0)

我能够使用一些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]
}

总是欢迎更优雅的解决方案。