2

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.outusage.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)
}
4

2 に答える 2

0

この設定を試してください。

  • ルートに保持stdoutします (必要に応じてレベルをinfo/ debug/に変更しますall)。またはアペンダーfalseに追加されるコンソール ログを制限するには、加法性を に設定します。usageapplication
  • 他のアペンダは から継承し、コンソールのロギングを制限するためにおよびをroot設定します。additivity falseapplicationusage
  • すべてのアプリケーション関連のログを に記録するには、grails.appに対して使用します。applicationapplication.log

お気に入り:

root {
         error 'stdout'
         additivity: false
     }

info usageAppender: 'usage.gui'
        additivity: false

info application: 'grails.app'
       additivity: false

注:-
異なるログ レベルのログは、同じパッケージ構造では機能しません。例えば:

info usageAppender: 'usage.gui'
error usageAppender1: 'usage.gui'

のみをログerrorに記録しusage.guiます。

于 2013-06-15T01:39:16.473 に答える
0

ほとんどの場合、src/groovy からのログ出力は表示されません。これは、他の場所でより高いレベルの ERROR がアプリケーションに設定されているためです。したがって、すべてのクラス ログをデバッグ レベルに設定すると、ロガー デバッグが機能します。

于 2014-06-27T19:04:41.560 に答える