Добавлено после комментария: Где ловятся исключения?
at io.dropwizard.cli.Cli.run(Cli.java:78)
дает нам ответ.
Что можно сделатьдля достижения цели:
Из примечаний к выпуску , которые читаются долго есть это PR №2260 . Похоже, что это имеет дело с заявленной проблемой: регистрация в формате JSON на этапе начальной загрузки до применения конфигурации.
Это может быть полезно или нет в зависимости от того, как журналы dropwizard
сконфигурированы и перенесены встек ELK. Если используется локальный файл журнала, то StdErr и StdOut должны быть перенаправлены в этот файл. Тогда LogStash
должен быть в состоянии справиться с ними. Если используется какой-либо прямой сетевой транспорт - я не знаю.
Второе редактирование: Существует также команда check
. Используется для проверки настроек конфигурации. Таким образом, он может быть интегрирован где-то в набор инструментов развертывания для проверки конфигурации развертывания.
~/source/dropwizard-static$ java -jar target/dropwizard-static-1.0-SNAPSHOT.jar check config1.yml
config1.yml has an error:
* Unrecognized field at: loging
Did you mean?:
- logging
- assets
- server
- metrics
- httpClient
[1 more]
~/source/dropwizard-static$ java -jar target/dropwizard-static-1.0-SNAPSHOT.jar
usage: java -jar dropwizard-static-1.0-SNAPSHOT.jar
[-h] [-v] {server,check} ...
positional arguments:
{server,check} available commands
named arguments:
-h, --help show this help message and exit
-v, --version show the application version and exit
Оригинальный ответ следующий:
У меня есть игрушка dropwizard
проект здесь . Когда я пытаюсь запустить его с неработающей конфигурацией:
#logging:
loging:
level: INFO
# level: DEBUG
loggers:
com.gitlab.zloster: DEBUG
, я получаю следующее:
~/source/dropwizard-static$ java -jar target/dropwizard-static-1.0-SNAPSHOT.jar server config1.yml
io.dropwizard.configuration.ConfigurationParsingException: config1.yml has an error:
* Unrecognized field at: loging
Did you mean?:
- logging
- assets
- server
- metrics
- httpClient
[1 more]
at io.dropwizard.configuration.ConfigurationParsingException$Builder.build(ConfigurationParsingException.java:279)
at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:140)
at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:89)
at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:126)
at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:74)
at io.dropwizard.cli.Cli.run(Cli.java:78)
at io.dropwizard.Application.run(Application.java:93)
at com.gitlab.zloster.ServeStaticApplication.main(ServeStaticApplication.java:21)
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "loging" (class com.gitlab.zloster.ServeStaticApplicationConfiguration), not marked as ignorable (6 known properties: "assets", "viewRendererConfiguration", "logging", "httpClient", "server", "metrics"])
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: com.gitlab.zloster.ServeStaticApplicationConfiguration["loging"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:60)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:822)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1152)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:258)
at com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer.deserialize(SuperSonicBeanDeserializer.java:155)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3984)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2276)
at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:127)
... 6 more
Мне кажется, что исключение регистрируется правильно *. * Это, конечно, зависит от определения «правильно зарегистрирован».
Вы можете проверить, как это работает, следуя классам в первой трассировке стека (до Caused by:
). Если вы не видите зарегистрированное исключение, это означает, что вы должны проверить конфигурацию журналирования и перенаправлены ли стандартные потоки ввода-вывода куда-либо.