通过添加以下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日志记录?
答案 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级别记录的其他类型的人工制品,则应为每个人员配置一个额外的记录器。