grails アプリケーションに構成エラーがあり、アペンダーが出力を間違った場所に送信するか、まったく送信しません。重複ログに関して多くの質問があるようですが、私の状況に回答を適用することができませんでした.
これが私のロギング設定スニペットです:
log4j = {
appenders {
// appender for usage tracking
appender new org.apache.log4j.RollingFileAppender(
name:"usageAppender",
maxFileSize:"1000KB",
maxBackupIndex: 10000,
file: "/var/log/tomcat6/app/usage.log",
layout:pattern(conversionPattern: '%d{DATE} %5p %c{1}:%L - %m%n')
)
appender new org.apache.log4j.RollingFileAppender(
name:"application",
maxFileSize:"1000KB",
maxBackupIndex: 10000,
file:"/var/log/tomcat6/app/application.log",
layout:pattern(conversionPattern: '%d{DATE} %8X{memoryused} %5p %t %c{1}:%L %X{username} %X{request} - %m%n')
)
console name:'stdout', layout:pattern(conversionPattern: '%d{DATE} %8X{memoryused} %5p %t %c{1}:%L %X{username} %X{request} - %m%n')
}
root {
// also tried error 'stdout'
error 'application'
}
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'
info 'usageAppender':'usage.gui'
}
プログラムを実行すると、出力が 、catalina.out
、usage.log
および に表示されapplication.log
ます。(log4j をバイパスして) stdout に直接送信された出力は、catalina.out に表示されます。
私が設定した場合
info additivity: false 'usageAppender': 'usage.gui'
その後、どちらのファイル アペンダーにも何も記録されませんが、stdout は引き続き catalina.out に入ります (log4j をバイパスします)。
「usage.gui」ロガーからの出力はusage.log
ファイルに、他のすべてのロギングからの出力はapplication.log
ファイルに、すべての print ステートメントの出力は catalina.out
. 冗長なログは必要ありません。これを構成するにはどうすればよいですか?
更新 @dmahapatro の質問への回答として、アプリケーションへのログインは標準の grails ロギングのいずれかで行われます
log.trace('some event');
または、次のように作成されたカスタム ロガーを使用します。
def usageLog
public UsageService() {
usageLog = Logger.getLogger("usage.gui")
}
この関数を呼び出して使用します。
protected void writeRecord(String topicId, String user, Long id, Long priorId, Long clientTime, String component, String action, String otherData) {
String msg = "$topicId\t$user\t$id\t$priorId\t$clientTime\t$component\t$action\t$otherData"
usageLog.info(msg)
}