0

これは私の現在の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 ファイルに送信し始めます。一番上のように各レベルを定義するときに異なるパッケージを明示的に述べた場合、ルートアペンダーのデバッグ構成でこの問題が発生するのはなぜですか?

ガイドしてください。

4

2 に答える 2

0

そうであるかどうかはわかりませんが、以下のすべてのパッケージ仕様appendersrootセクションを移動すると役立つ可能性があります。またstdout、 witherrordebugwithin root を指定すると冗長に見えます。

また、細かい設定のためにアペンダー固有の定義を指定するオプションがあります (例: http://snipplr.com/view/63391/grails-log4j-for-different-environments--an-example/ )。

于 2012-09-29T21:07:58.213 に答える