搜尋

首頁  >  問答  >  主體

java - Spring boot 讀取 放在 jar 套件外的,log4j 設定文件,系統有建立日誌文件,不寫入日誌資訊。

如下圖所示,運行的jar 包和 log4j 的配置文件放在同一個目錄,jar包內沒有任何配置文件:

在spring boot 框架的 main 方法中,通過下麵這種方式,加載jar 包外的log4j配置文件

log4j配置文件的輸出位置如下:

運行java -jar gf-mfile.jar 之後,控製台有info 日誌信息,如下圖:


係統也能夠創建 micofile.log 日誌文件,但是,文件為null,0字節,裏麵沒有任何數據,info 日誌信息沒有寫入文件中,如下圖:

問題:
如果,我將log4j配置文件 打到jar 包中,如下圖:

執行jar,日誌文件是能夠生成日誌信息的。我把log4j配置文件,放到和jar 包同級目錄就隻創建日誌文件不寫入日誌信息了。

為什麼配置文件放到jar包外,日誌文件中沒有內容? 請大神賜教,感激不盡……
(本人推測,是否是main方法中的讀取,log4j 配置文件的代碼有問題,如果是這樣應該怎麼修改?)

阿神阿神2802 天前1547

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-04-18 10:57:51

    還要看你的運作參數,特別是 classpath 參數,是否把這個套件外的設定檔包含在 classpath 當中了。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    1.檢查下設定檔裡面LOG的輸出等級
    2.檢查下程式碼中Logger的程式碼,是否和輸出等級符合

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:51

    根據下面那位大俠(捏造的信仰)的建議,最終成功解決問題,下面,記錄一下問題解決的詳細步驟:
    首先,找到jar 包中的MANIFEST.MF 文件,找到該文件的Main-Class方法:

    執行以下命令:

    java.exe -cp .;gf-mfile.jar org.springframework.boot.loader.JarLauncher

    日誌檔中有了資訊。

    =========附錄,java -cp 指令解析===============
    java -cp .;c:dir1lib.jar Test

    -cp 和 -classpath 一樣,是指定類別運作所依賴其他類別的路徑,通常是類別庫,jar包之類,需要全路徑到jar包,window上分號「;」

    分隔,linux上是分號「:」分隔。不支援通配符,需要列出所有jar包,用一點“.”代表當前路徑。
    雖然現在都有eclipse之類的IDE了,但有時候後會手工編譯和運行一些程序,很多人包括多年開發經驗的人都不知道怎麼在命令行參
    數運行類。有點杯具…
    使用範例:
    java -cp ..libhsqldb.jar org.hsqldb.Server -database mydb

    java -cp ../lib/hsqldb.jar org.hsqldb.Serverdbbase.0 my-cp ../lib/hsqldb.jar org.hsqldb.Serverdb -dbname.0 mydb

    回覆
    0
  • 取消回覆