我正在尝试在我的项目中配置控制台appender。当我在本地调试中启动我的应用程序时它工作正常。但是,当我在Gradle中构建我的jar并将其作为独立应用程序启动时,我得到以下错误:
[0]; Could not resolve type id 'console' into a subtype of [simple type, class io.dropwizard.logging.AppenderFactory]: known type ids = [AppenderFactory]
以下是我的.yml
文件的摘要:
logging:
appenders:
- type: console
timeZone: UTC
logFormat: '%-5level [%date{ISO8601}] [%X{requestId}] %c: %msg%n%rootException'
我能够找到有关类似问题的帖子。例如,此线程here建议检查文件META-INF/services/io.dropwizard.logging.AppenderFactory
是否在应用程序jar中,如果内容如下:
io.dropwizard.logging.ConsoleAppenderFactory
io.dropwizard.logging.FileAppenderFactory
io.dropwizard.logging.SyslogAppenderFactory
我已经验证了。在我的情况下文件是它应该的位置,它具有完全相同的内容。 任何帮助将不胜感激。
Dropwizard版本0.9.2
答案 0 :(得分:2)
Gradle是否会产生一个Uber / Fat Jar(一个包含其内部所有依赖关系的jar)或一个只有你的Dropwizard应用程序的简单jar?
建议为Dropwizard部署构建Fat-jar,如果您不这样做,请切换到此样式。
现在在构建Fat-Jar时,您需要执行以下操作来解决您的问题(这在您链接的讨论中提到过)
如果您使用maven-shade插件构建胖罐,请不要忘记SPI资源转换器将SPI资源收集到jar中。
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
要在Gradle中执行相同操作,请检查此discussion。
HTH。