2009-12-02 52 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