代码之家  ›  专栏  ›  技术社区  ›  Rob Hruska MegalomanINA

grails 1.1.1 log4j DSL抛出PatternLayout配置的MissingMethodException

  •  3
  • Rob Hruska MegalomanINA  · 技术社区  · 15 年前

    我已经将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 回复  |  直到 15 年前
        1
  •  6
  •   Rob Hruska MegalomanINA    15 年前

    结果我在配置中错过了一个等号。解决办法是改变:

    log4j {
      ...
    }
    

    log4j = {
      ...
    }
    

    与文档中的示例相比,一旦您看到了非常明显的解决方案,但是当您在DSL中获得特定闭包/方法的错误时,这些错误不会使真正的问题变得明显。