在Grails中将单个类的输出日志输出到文件

时间:2014-10-28 08:49:11

标签: grails log4j

我试图将单个包的log4j输出重定向到文件。我的配置如下:

log4j = {

    appenders {
        console name:'stdout'
        appender new DailyRollingFileAppender(
                name: 'audit',
                datePattern: "'.'yyyy-MM-dd",
                fileName: "${userHome}/${applicationName}.log",
                layout: pattern(conversionPattern: '%d [%t] %-5p %c{2} %x - %m%n')
        )
    }

    root {
        error 'stdout'          
    }

    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',
            'StackTrace',
            'org.hibernate.type',
            'org.hibernate.SQL',
            'Hibernate',
            'org.hibernate.type.descriptor.sql.BasicBinder'

    debug   'grails.app' // set logging for all grails artifacts

    info    audit:
            'my.package.name', additivity: false        
}

以某种方式,my.package.name包的记录不会写入文件,而是写入stdout。当我将audit记录器放入我的root配置中时,日志记录将写入文件,但其他类的记录也会写入此文件中,这是我不想要的。

我只希望将my.package.name的日志记录输出写入文件,所有其他日志记录都可以转到stdout。我试过玩additivity,但我无法弄清楚。

1 个答案:

答案 0 :(得分:1)

我通过将my.package.name更改为grails.app.my.package.name来解决此问题。