7

grails アプリケーションの 1 つのコントローラーからのメッセージを info レベルで特定のファイルに記録したいと考えています。info またはその他のレベルの他のすべてのものは、別のデフォルトのログ ファイルに移動する必要があります。

log4Jただし、以下で定義されている「デフォルト」のアペンダーに喜んでログを記録しますが、usage.log ファイルにデータを入力することはまったくできません。

セットアップが機能しない理由について、誰か手がかりを与えることができますか?

私のlog4jのセットアップは次のとおりです。

log4j = {

appenders {

    console name: 'stdout', 
    layout: pattern(conversionPattern: '%d %-5p %c{1} - %m%n')

    appender new DailyRollingFileAppender(
            name: 'default', 
            datePattern: "'.'yyyy-MM-dd",
            layout: pattern(conversionPattern: '%d %-5p %c{1} - %m%n'),
            file: 'C:/logs/default.log'
         )

    //daily usage log
    appender new DailyRollingFileAppender(
            name: 'usage', datePattern: "'.'yyyy-MM-dd",
            layout: pattern(conversionPattern: '%d %-5p %c{1} - %m%n'),
            file: 'C:/logs/usage.log'
         )
}


info usage: "grails.app.controllers.com.example.MyController", 
additivity: false

root {
    info 'stdout', 'default'
    additivity = true
}

     info 'grails.app'
}

アップデート

特定のコントローラ クラス マッピングを次のように置き換えることで、これを解決できました。

info usage: 'usage', additivity: true

そして使用する

private static final log = LogFactory.getLog("usage")

他の文書化または説明された方法は機能しないようです。理想的には、パッケージまたはクラスごとに構成できると思いますが、これは機能します。

4

1 に答える 1

2

名前付きパラメータタイプに注意する必要がありますinfo。al。期待しています。次の構成は、Grails2.1.1テストプロジェクトで機能します。

// log4j configuration
log4j = {
    appenders {
        def logPattern = '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{2} - %m%n'
        console name: 'stdout', layout: pattern(conversionPattern: logPattern)

        appender new DailyRollingFileAppender(
            name: 'usage', datePattern: "'.'yyyy-MM-dd",
            layout: pattern(conversionPattern: logPattern),
            file: 'usage.log'
        )
    }

    root {
        error 'stdout'
    }

    info additivity: false, usage: ["grails.app.controllers.com.example.MyController"]
} 
于 2012-11-06T11:06:45.743 に答える