2016-03-07 29 views
0

我試圖從我的可執行文件myapp.jar以外加載logback.xml文件。從Manifest Class加載logback.xml路徑

myapp.jar具有META-INF/MANIFEST.MF文件大致是這樣的:

Manifest-Version: 1.0 
Class-Path: logger-config lib/lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar 
Main-Class: com.mycompany.MyAppMain 

並駐留在

my-app/ 
    lib/ 
    jcl-over-slf4j-1.7.18.jar 
    slf4j-api-1.7.18.jar 
    logger-config/ 
    logback.xml 
    myapp.jar 

(有很多其他罐子依賴性,切出的那些)。

現在,如果我使用java -jar myapp.jar運行應用程序,它將開始正常,但它不會拾取logback.xml文件

從自己的文件:

如果沒有找到這樣的文件,它會檢查在classpath中文件logback.xml ..

http://logback.qos.ch/manual/configuration.html

我知道我可以使用logback.configurationFile來覆蓋它,但有沒有辦法將XML文件放到classpath中,以便logback自動加載它?它似乎只有在我打包logback.xmlmyapp.jar(將它放在src/main/resources目錄中)時才起作用,但是隨後配置文件將被傳播到其他使用myapp.jar作爲依賴關係的JAR。

回答

1

也許你只是把它剪掉了,但是你的類路徑沒有指定logback-classic依賴關係。 您必須確保logback出現在您的類路徑定義中的slf4j之前。另外,請注意logger-config路徑的尾部斜槓 - 如果沒有它,logback將無法找到您的logback.xml(有關詳細信息,請參閱here)。

像這樣的東西應該工作:

Class-Path: lib/logback-classic-1.1.6.jar lib/logback-core-1.1.6.jar lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar logger-config/ 
+0

似乎是結尾的斜線!否則我有所有適當的庫,我只是把它切出來了.. –