0

grails 1.3.7 アプリケーションからログを記録していますが、ログに本質的に重複したレコードが表示されます。

12/07/25 23:57:39 TRACE querium.SearchService: setting snippet for posting 1855803974 [null] 54: document 1534340330 [632]
25 Jul 2012 23:57:39,943     7851 TRACE pool-1-thread-1 SearchService:? gene 60258782 - setting snippet for posting 1855803974 [null] 54: document 1534340330 [632]

私のロギングは次のように構成されています:

appenders {
    // appender for usage tracking
    appender new org.apache.log4j.RollingFileAppender(
        name:"usageAppender",
        maxFileSize:"100KB",
        maxBackupIndex: 10000,
        file:"usage.log",   // "/tmp/logs/usage.log",
        layout:pattern(conversionPattern: '%d{DATE} %5p %c{1}:%L - %m%n')
    )
    appender new org.apache.log4j.RollingFileAppender(
        name:"querium",
        maxFileSize:"1000KB",
        maxBackupIndex: 10000,
        file:"querium.log",   // "/tmp/logs/querium.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 {
    error 'querium', 'stdout'
}

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' 

warn  'org.mortbay.log'
debug 'grails.app.service'
trace 'grails.app.service.backgroundservice'
error 'org.hibernate.SQL'
trace 'grails.app.controller.com.fxpal.querium.UiController'
trace 'grails.app.controller.com.fxpal.querium.CommentController'
warn  'grails.app.controller.com.fxpal.querium.TopicController'
off 'grails.app.service.com.fxpal.redis.RedisService'
trace 'grails.app.service.com.fxpal.querium.SearchService'
debug   'com.fxpal.cloudwork.docubrowse.SearchDocubrowse'
off 'grails.app.service.com.fxpal.proxy.ProxyService'

debug 'org.codehaus.groovy.grails.plugins.springsecurity.*'
debug 'com.fxpal.querium.CiteSeerDocumentParser'

debug 'com.fxpal.querium.LoggingFilters'
    info 'usageAppender':'usage.gui'

正しいデータが に送られますusageAppender。このアルカナで練習した誰かが、2 倍のレコードを取得している理由を理解できますか?ただし、残りのロギングのレコードはわずかに異なりますか?

2012 年 7 月 26 日編集: 残りのロギング構成を追加しました。

4

1 に答える 1

1

表示されている出力は、2 つの異なるコンソール アペンダーがルート ロガーに接続されているように見えます (または、1 つがルート ロガーに接続され、もう 1 つがロガー ツリーのさらに下のどこかに接続されている可能性があります)。表示されている 2 行目は独自のstdoutロガー形式ですが、1 行目は次のパターン レイアウトと一致しています。

%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

これは Grails のデフォルト形式ではありません。Grails log4j DSL パーサーのコードを確認すると、DSL の処理を​​開始する前にロギング構成がリセットされないことに気付きました。したがって、DSL パーサーが実行される前に、この余分なアペンダーを作成している、クラスパスのどこかに (アプリが依存する JAR ファイルのいずれかまたは類似の場所に、または埋め込まれている) 迷子log4j.propertiesまたはファイルがあると思われます。あなたはあなたの中でこれを決定することができますlog4j.xmlsrc/javaBootStrap.init

this.getClass().getClassLoader().getResources("log4j.properties").each {
  println it
}

(log4j.xml についても同様)。それが JAR 内にあることが判明し、それを簡単に削除できない場合は、クロージャーLogManager.loggerRepository.resetConfiguration()の一番最初にlog4j(自分のappendersセクションの前に) 呼び出すことを試みることができます。

于 2012-07-26T17:20:32.713 に答える