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