【问题标题】:Grails 1.1.1 log4j DSL throws MissingMethodException for PatternLayout configurationGrails 1.1.1 log4j DSL 为 PatternLayout 配置抛出 MissingMethodException
【发布时间】:2009-12-02 19:38:10
【问题描述】:

我已将 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() 函数添加括号,但没有成功。 是什么导致了这个异常?

【问题讨论】:

    标签: logging grails log4j


    【解决方案1】:

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

    log4j {
      ...
    }
    

    log4j = {
      ...
    }
    

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

    【讨论】:

    • 我遇到了类似的问题,但我的 log4j 有等号...这是在从 grails 2.0.1 升级到 2.2.2 之后。
    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 2010-12-18
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2015-02-13
    • 2015-04-28
    • 2011-12-10
    相关资源
    最近更新 更多