Grails 1.1.1 log4j DSL为PatternLayout配置抛出MissingMethodException

时间:2009-12-02 19:38:11

标签: 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()函数添加括号,但没有成功。 导致此异常的原因是什么?

1 个答案:

答案 0 :(得分:6)

原来我错过了配置中的等号。解决方案是改变:

log4j {
  ...
}

log4j = {
  ...
}

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