1

私の設定Config.groovyがありlog4jます:

log4j = {

    appenders {
        file name:'connection', file: '/tmp/connection.log'
    }

    info "grails.app.controllers.myController"

    root {
        info 'connection'
    }

myController ログのみを取得するように構成するにはどうすればよいですか?

4

3 に答える 3

2

myController ログのみを取得するように構成するにはどうすればよいですか?

現在、ルートロガーを「info」レベルに設定しているため、

info "grails.app.controllers.myController"

実際には何もしません (このロガーはとにかくルートから情報のレベルを継承するため)。それ以外のすべてのロギングを無効にしたい場合はmyController、ルートロガーを情報ではなく「オフ」に設定する必要があります

root {
    off 'connection'
}

myController代わりに、出力を入れ/tmp/connection.logて、他のログメッセージを通常どおり標準出力に残したい場合は、必要です

root {
  info 'stdout'
}

info connection:'grails.app.controllers.myController', additivity:false

(または、rootブロックを完全に省略して、デフォルトの動作を取得します。これは、と言うのと同じですroot { error "stdout" })。はadditivity:false、 myController ロガーに、それに直接接続されたアペンダー (「接続」アペンダー) にのみログを記録するように指示します。これがないと、メッセージは親から継承されたアペンダー、つまりデフォルトの「stdout」アペンダーにも送られます

于 2013-01-24T13:35:51.570 に答える
1

そのようなことを試してください:

log4j = {

    def loggerPattern = '%d %-5p >> %m%n'

    def errorClasses = [] // add more classes if needed
    def infoClasses = ['grails.app.controllers.myController'] // add more classes if needed
    def debugClasses = [] // add more classes if needed

    appenders {
        console name:'stdout', layout:pattern(conversionPattern: loggerPattern)
        rollingFile name: "file", maxFileSize: 1024, file: "./tmp/logs/logger.log", layout:pattern(conversionPattern: loggerPattern)
    }

    error   stdout: errorClasses, file: errorClasses
    info    stdout: infoClasses, file: infoClasses
    debug   stdout: debugClasses, file: debugClasses
}
于 2013-01-24T13:35:30.243 に答える
1

アペンダー固有のロガーを定義する必要があります。

info connection: "grails.app.controllers.myController"

次に、ルート ロガーの継承を避けるために、ルート ブロックから「接続」アペンダーを削除する必要があります。

詳細については、grails ドキュメントのログ セクションを参照してください: http://grails.org/doc/latest/guide/conf.html#logging

于 2013-01-24T13:02:21.743 に答える