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. 在这个奥秘中练习的人可以弄清楚为什么我得到双倍的记录,但略有不同,其余记录的记录?

2012 年 7 月 26 日编辑:添加了其余的日志记录配置。

4

1 回答 1

1

您看到的输出看起来好像有两个不同的控制台附加程序附加到您的根记录器(或者可能一个附加到根记录器,另一个附加到记录器树下方的某个位置)。您看到的第二行是您自己的stdout记录器格式,但第一行与模式布局一致

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

这不是 Grails 的默认格式。检查 Grails log4j DSL 解析器的代码,我注意到它在开始处理 DSL 之前不会重置日志记录配置。因此,我怀疑您的类路径中的某处有一个流浪log4j.propertieslog4j.xml文件(在src/java或类似的地方,或埋在您的应用程序所依赖的 JAR 文件之一中),它在 DSL 解析器运行之前创建了这个额外的附加程序。您可以BootStrap.init通过这样做来确定这一点

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

(同样适用于 log4j.xml)。如果它被证明在一个 JAR 中并且你不能轻易地删除它,你可以尝试LogManager.loggerRepository.resetConfiguration()在你的闭包中首先调用它log4j(在你自己的appenders部分之前)。

于 2012-07-26T17:20:32.713 回答