這是我當前的log4j配置。問題在於開發的具體部分。使用不同appender的Grails日誌記錄配置
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
}
現在你上面看到特定的包重定向到的appender 2個調試語句。 現在,如果我想使用包XXX調試,併發送給appender A和B,我不得不使用上面的定義 - 它重複調試appender1:XXX和調試appender2:XXX包。
我查了Grails的日誌 - 理想情況下,下面應該努力解決的額外的調試/ appender的語句: 錯誤org.springframework
debug mycompany.packagenames...
root {
error 'appenderAppLog','stdout'
debug 'appenderDebugLog', 'stdout'
additivity = true
}
但是當我這樣做,實際發生的是中列出的所有軟件包錯誤類別 - 開始將調試消息發送到appenderDebugLog文件。如果在頂層定義每個級別時明確聲明瞭不同的包,爲什麼Root appender中的調試配置會產生此問題?
請指導。
嘗試移動appenders和root下的所有包 - 並且仍然觀察到相同的行爲。接下來會嘗試鏈接。 – Anna