【问题标题】:Grails conversionPattern change at runtimeGrails 转换运行时的模式更改
【发布时间】:2010-09-08 13:34:36
【问题描述】:

为我的 grails 应用程序使用标准 log4j 配置,并使用类似的自定义转换模式:

log4j = {
 appenders {
        console name:'stdout', layout:pattern(conversionPattern: '[%-7p][%d{dd/MM/yyyy HH:mm:ss,SSS}] %C %m%n')
    }

root {
 warn 'stdout'
 additivity = true
}

error  'org.grails.plugins.springsecurity'

error  'org.codehaus.groovy.grails.web.servlet'  //  controllers
// ...

warn   'org.mortbay.log',
 'org.apache.tomcat',
 'org.apache.tomcat.util.digester'

 debug  'grails.app'

}

我的 grails 应用程序按预期启动 .. 具有良好的 conversionPattern ...但仅在少数日志行中 ... 最终回退到默认 grails conversionPattern ... :-/

有什么想法吗?

【问题讨论】:

    标签: grails log4j


    【解决方案1】:

    我不会在 Grails 中编写代码,但我非常了解 log4j。

    从表面上看,您似乎需要检查那些未按预期格式化的行。很有可能,它们不会被使用您的 stdout appender 的记录器捕获。

    根据我的拼凑,在我看来,也许您的警告记录器是唯一使用您的标准输出附加程序的记录器。这意味着除警告之外的任何内容都不会按预期格式化。此外,您的库中存在的记录器也可能会捕获一些日志语句,但不会捕获其他日志语句。


    基本上,解决此问题的最佳方法是修改您的模式,以便为您提供有关记录器的良好信息(我建议将执行速度非常慢的 %C 模式替换为 %c 以查看使用的确切类别记录器)。然后,查看格式正确的内容与其他所有内容之间的差异。
    • 它们是否有共同的级别(信息、调试、错误等)?
    • 它们是否来自同一个包?
    • 它们是第 3 方库调用吗?

    找出它们的共同点,你就会发现你的错误。

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 1970-01-01
      • 2012-05-31
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2011-07-07
      • 1970-01-01
      相关资源
      最近更新 更多