Grails 1.1.1 log4j DSL создает исключение MissingMethodException для конфигурации PatternLayout - PullRequest
3 голосов
/ 02 декабря 2009

Я обновил приложение Grails 1.0.3 до Grails 1.1.1. Я обновил конфигурацию log4j в Config.groovy, чтобы она соответствовала новому DSL . Однако после определения ConsoleAppender с 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]]

(я разбил вышеупомянутое сообщение на несколько строк для удобства чтения).

Моя конфигурация:

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 Ответ

6 голосов
/ 03 декабря 2009

Оказывается, я пропустил знак равенства в конфигурации. Решение было изменить:

log4j {
  ...
}

до

log4j = {
  ...
}

Довольно очевидное решение, как только вы видите его по сравнению с примерами в документации, но когда вы получаете ошибки для определенных замыканий / методов в DSL, ошибки не делают очевидным, в чем реальная проблема. 1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...