这是我当前的 log4j 配置。问题是特定于开发的部分。
log4j = {
appenders {
console name:'stdout',
threshold: org.apache.log4j.Level.ERROR
rollingFile name: "appenderAccessLog",
...
rollingFile name: "appenderAppLog",
...
environments {
development{
rollingFile name: "appenderDebugLog",
threshold: org.apache.log4j.Level.DEBUG,
....
}
}
}
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'
environments {
production {
// Override previous setting for 'grails.app.controller'
root {
error 'appenderAppLog','stdout'
additivity = false
}
}
debug additivity: false, stdout :['mycompany',
'mycompany.security',
'mycompany.common',
'grails.app.services.mycompany.services']
debug additivity: false, appenderDebugLog :['mycompany',
'mycompany.security',
'mycompany.common',
'grails.app.services.mycompany.services']
root {
error 'appenderAppLog','stdout'
additivity = true
}
现在,您可以在上面看到 2 个调试语句,其中包含特定的包重定向到附加程序。现在,如果我想对包 XXX 使用调试并发送到附加程序 A 和 B,我将不得不使用上述定义 - 它是 debugg appender1: XXX 和 debug appender2: XXX 包的重复。
我检查了 grails 日志 - 理想情况下,以下内容应该可以解决额外的调试/附加语句:error org.springframework
debug mycompany.packagenames...
root {
error 'appenderAppLog','stdout'
debug 'appenderDebugLog', 'stdout'
additivity = true
}
但是当我这样做时,实际发生的是错误类别中列出的所有包 - 开始将调试消息发送到 appenderDebugLog 文件。当我在顶部定义每个级别时明确说明了不同的包时 - 为什么根附加程序中的调试配置会创建此问题?
请指导。