2009-12-02 51 views
3

我已经将Grails 1.0.3应用程序升级到Grails 1.1.1。我已经升级了Config.groovy中的log4j配置以符合new DSL。然而,限定了具有的PatternLayout一个是ConsoleAppender之后,应用程序将无法启动,并且代替投用该消息的MissingMethodException:Grails 1.1.1 log4j DSL为PatternLayout配置抛出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]] 

(I打破了上述消息分成多个线,用于阅读)。

我的配置是:

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', 
     ... 
    } 
    ... 
} 

我试图改变模式,将括号控制台()函数,但没有成功。 什么导致此例外?

回答

6

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

log4j { 
    ... 
} 

log4j = { 
    ... 
} 

很明显的解决方案,一旦你看到它相对于文档中的例子为,但是当你得到错误的内封特定/方法DSL,这些错误并不能说明真正的问题是什么。

+0

我有一个类似的问题,但我的log4j有等号......这是从grails 2.0.1升级到2.2.2之后。 – jonnybot 2013-08-13 17:39:57