Grails日志记录:多个记录器和追加器

时间:2013-02-13 01:22:20

标签: grails logging

我正在尝试配置Grails(2.2.0)应用程序以获取特定包的日志文件,然后将控制台输出用于其他所有内容。我还想确保日志文件中没有任何内容也会进入控制台(让它们完全分开)。阅读the docs我仍然对如何完成这项工作感到困惑。有人可以通过一个完成此操作的示例帮助(使用log4j DSL)吗?

1 个答案:

答案 0 :(得分:4)

我在this question的帮助下完成了这项工作。这是我在Config.groovy中得到的结果:

log4j = {
    appenders {
        console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n')

        rollingFile name: 'extraAppender',
                conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n',
                maxFileSize: 1024,
                file: '/tmp/logs/extra.log'
    }

    error  'org.codehaus.groovy.grails.web.servlet',        // controllers
           'org.codehaus.groovy.grails.web.pages',          // GSP
           'org.codehaus.groovy.grails.web.sitemesh',       // layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping',        // URL mapping
           'org.codehaus.groovy.grails.commons',            // core / classloading
           'org.codehaus.groovy.grails.plugins',            // plugins
           'org.codehaus.groovy.grails.orm.hibernate',      // hibernate integration
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate'

    trace  additivity: false, extraAppender: 'extraLogger'
}

然后在应该使用extraLogger的类中,我就像这样记录器:

def extraLogger = LoggerFactory.getLogger('extraLogger')

这让我可以将更多内容记录到控制台,将其他一些特定内容记录到另一个日志文件中,而不会在控制台日志中记录任何特定内容。