无法在 dropwizard 中配置日志记录。无法解析类型 ID 'console'

Unable to configure logging in dropwizard. Could not resolve type id 'console'

我正在尝试在我的项目中配置控制台附加程序。当我在本地调试中启动我的应用程序时,它工作正常。但是,当我在 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

Gradle 是生成一个 Uber/Fat Jar(一个内部包含所有依赖项的 jar)还是一个仅包含您的 Dropwizard 应用程序的简单 jar?

建议为 Dropwizard 部署构建一个 Fat-jar,所以如果您不这样做,请切换到这种风格。

现在在构建 Fat-Jar 时,您需要执行以下操作来解决您的问题(您链接的讨论中提到了这一点)

If you use maven-shade plugin for building a fat jar, don't forget about SPI resource transformer for collecting SPI resources into the jar.

<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>

要在 Gradle 中执行相同操作,请选中此 discussion

HTH.