Grails conversionPattern在运行时更改

时间:2010-09-08 13:34:36

标签: grails log4j

为我的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 ...: - /

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不用Grails编码,但我确实非常了解log4j。

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

从我可以拼凑的内容来看,我认为可能你的警告记录器是唯一使用你的stdout appender的人。除了警告之外的任何其他内容都不会按预期格式化。此外,您的库中存在的记录器也可能捕获一些日志语句而不是其他日志语句。

<小时/> 基本上,解决此问题的最佳方法是修改模式以便为您提供有关记录器的良好信息(我建议更换%C模式,执行速度非常慢,使用%c来查看使用的确切类别记录器)。然后,查看格式正确的内容与其他所有内容之间的差异。

  • 他们有共同的级别(信息,调试,错误等)吗?
  • 他们是否来自同一个包裹?
  • 他们是第三方图书馆电话吗?

弄清楚他们有什么共同点,你会发现错误。