これは私の現在の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 ログを確認しました - 理想的には、追加の debug/appender ステートメントを解決するために以下が機能するはずです: error org.springframework
debug mycompany.packagenames...
root {
error 'appenderAppLog','stdout'
debug 'appenderDebugLog', 'stdout'
additivity = true
}
しかし、実際にそれを行うと、エラー カテゴリにリストされているすべてのパッケージが発生します。デバッグ メッセージを appenderDebugLog ファイルに送信し始めます。一番上のように各レベルを定義するときに異なるパッケージを明示的に述べた場合、ルートアペンダーのデバッグ構成でこの問題が発生するのはなぜですか?
ガイドしてください。