在DEBUG级别记录我的应用程序类,在WARN记录所有其他类

时间:2014-08-20 16:12:36

标签: grails logging log4j

通过添加以下Spring bean,我已经将我的Grails应用程序配置为从/conf/log4j.properties文件而不是Config.groovy中更常用的DSL读取log4j配置:

log4jConfigurer(MethodInvokingFactoryBean) {
    targetClass = "org.springframework.util.Log4jConfigurer"
    targetMethod = "initLogging"
    arguments = ["/conf/log4j.properties", 1000 * 60] // 2nd arg is refresh interval in ms
}

我的目标是在DEBUG级别记录应用程序本身的所有类,并在WARN级别记录所有其他类。 /conf/log4j.properties包含以下内容:

log4j.logger.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app=DEBUG, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p myapp %c{3} %d{HH:mm:ss,SSS} %t : %m%n

似乎命名空间com.myapp用于我的应用中的常规类(例如src/groovy下的那些),而命名空间grails.app用于Grails工件(控制器,服务,taglibs)等)。但是grails.app命名空间还包含插件中的人工制品,我不想在DEBUG级别登录。

有没有办法只为我的应用程序中的类启用DEBUG日志记录?

2 个答案:

答案 0 :(得分:2)

将您的包附加到grails.app.controllers以获取您的应用程序。

info 'grails.app.controllers.mypackage'

答案 1 :(得分:0)

添加以下内容解决了问题

log4j.logger.grails.app.conf.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app.filters.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app.taglib.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app.services.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app.controllers.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app.domain.com.myapp=DEBUG, CONSOLE

如果Grails应用程序具有您想要在DEBUG级别记录的其他类型的人工制品,则应为每个人员配置一个额外的记录器。