2016-09-13 26 views
3

我想在我的項目中配置控制檯appender。當我在本地調試應用程序時它工作正常。然而,當我建立它在我的罐子在搖籃和推出它作爲一個獨立的應用程序我得到以下錯誤:無法在dropwizard中配置日誌記錄。無法解析類型ID「控制檯」

[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

回答

2

是否搖籃產生尤伯杯/脂肪罐(所有一罐它裏面本身的依賴),或者一個簡單的罐子,只有你Dropwizard應用程序?

建議爲Dropwizard部署構建一個Fat-jar,因此如果您不這樣做,請切換到此樣式。

現在同時建立了發-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"/> 

要做到在搖籃一樣,檢查這discussion

HTH。

+0

是的,它建立了一個肥缸。我的內部jar結構應該如何讓Dropwizard知道如何正確讀取日誌配置?正如我已經提到,我的jar包含META-INF/services/io.dropwizard.logging.AppenderFactory,它的描述如上所述。 ServicesResourceTransformer將應用哪些轉換?請澄清。 –

+0

讓ServicesResourceTransformer將所有可能的接口在多個jar(在他們自己的META-INF文件中)的實現合併到一個文件中。你可以嘗試添加另一個變壓器到你的構建配置? org.apache.maven.plugins.shade.resource.ManifestResourceTransformer – kgdinesh

+0

我不明白爲什麼我需要首先調用shadow插件。我提到的線程解釋說,如果結構不像描述的那樣,問題就會顯現出來。相反,在我的情況下,我的jar包含META-INF/services/io.dropwizard.logging.AppenderFactory以及上述內容。所以,在我看來,根本原因可能完全不同。 –

相關問題