grails 2.1.2 log4j配置奇怪的行为

时间:2015-02-26 14:03:56

标签: grails logging configuration log4j

我有以下log4j配置:

log4j = {   
    appenders {
        appender new DailyRollingFileAppender(name: 'dailyAppender', ...)
    }

    root {
        error 'dailyAppender'
    }

    info 'dailyAppender' : 'com.intelli', 'grails.app'
}
" grails.app" logger用于grails artefacts(服务,控制器,..),而" com.intelli"用于使用LogFactory类初始化的其他自定义记录器(如/ src / groovy / **,...)。

现在的问题是,使用此配置自定义记录器(' com.intelli')未记录任何内容。然而,grails控制器和服务正在记录好!

当我更改记录器的顺序时:

log4j = {   
    ...

    info 'dailyAppender' : 'grails.app', 'com.intelli'
}

自定义记录器记录正常,但是 grails服务和控制器根本没有记录

1 个答案:

答案 0 :(得分:1)

解决方案非常棘手,您需要将记录器括在列表(“[]”)括号中:

log4j = {   
    appenders {
        appender new DailyRollingFileAppender(name: 'dailyAppender', ...)
    }

    root {
        error 'dailyAppender', additivity: false
    }

    info 'dailyAppender' : ['com.intelli', 'grails.app']
}

使用此配置,一切都按原样记录。

这不是问题的一部分,但为了防止双重记录,我们需要将可加性设置为false:

log4j = {   
    appenders {
        appender new DailyRollingFileAppender(name: 'dailyAppender', ...)
    }

    root {
        error 'dailyAppender'
    }

    info 'dailyAppender' : ['com.intelli', 'grails.app'], additivity: false
}