java - Spring boot 读取 放在 jar 包外的,log4j 配置文件,系统有创建日志文件,不写入日志信息。
阿神
阿神 2017-04-18 10:55:51
0
3
1503

如下图所示,运行的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 配置文件的代码有问题,如果是这样应该怎么修改?)

阿神
阿神

闭关修行中......

全部回覆(3)
黄舟

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

左手右手慢动作

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

左手右手慢动作

根據下面那位大俠(捏造的信仰)的建議,最終成功解決問題,下面,記錄一下問題解決的詳細步驟:
首先,找到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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!