logging - Grails 1.1.1 log4j DSL 为 PatternLayout 配置抛出 MissingMethodException

标签 logging grails log4j

我已将 Grails 1.0.3 应用程序升级到 Grails 1.1.1。我已经升级了 Config.groovy 中的 log4j 配置以符合 new DSL .但是,在使用 PatternLayout 定义 ConsoleAppender 之后,应用程序不会启动,而是抛出 MissingMethodException 并显示以下消息:

groovy.lang.MissingMethodException: No signature of method: \
groovy.util.ConfigSlurper$_parse_closure5.pattern() is applicable \
for argument types: (java.util.LinkedHashMap) \
values: [[conversionPattern:%d{ISO8601} [%10.10t] [%18.18c] [%5p] - %m%n]]

(为了便于阅读,我将上面的消息分成多行)。

我的配置是:

environments {
  development {
    log4j {
      appenders {
        console name: 'myAppender',
                layout: pattern(conversionPattern: '%d{ISO8601} [%10.10t] [%18.18c] [%5p] - %m%n')
        ...
      }
      root {
        error 'myAppender'
        additivity = true
      }
      error 'org.codehaus.groovy.grails.plugins',
            'org.codehaus.groovy.grails.orm.hibernate',
      ...
  }
  ...
}

我试过改变模式,为 console() 函数添加括号,但没有成功。 是什么导致了这个异常?

最佳答案

原来我在配置中漏掉了一个等号。解决方案是更改:

log4j {
  ...
}

log4j = {
  ...
}

与文档中的示例相比,这是一个非常明显的解决方案,但是当您在 DSL 中遇到特定闭包/方法的错误时,这些错误并不能说明真正的问题是什么。

关于logging - Grails 1.1.1 log4j DSL 为 PatternLayout 配置抛出 MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835292/

相关文章:

需要外部关系的 Grails 插件

java - log4j2 外部库日志记录到单独的文件中

python 日志记录和处理程序的使用

python - 覆盖 python 日志记录以提高测试效率

grails - Grails Assets 目录管理

json - Grails:将非域类转换为JSON

java - Log4j2 RollingFile 不工作

java - 同一类的不同实例的单独日志文件

java - 将 Java.logging 扩展到另一个日志级别?

java - 如何为每个执行的类生成 Log4j 日志