log4j2配置檔案動態獲取容器環境變數

2022-04-28 15:27:15 字數 1528 閱讀 1221

一 背景

乙個專案在不同的環境中執行時可能有不同日誌輸出路徑,比如在開發環境是乙個命名空間,在測試環境又是另外乙個命名空間,在生產環境又是另外乙個命名空間,尤其是容器化服務之後,日誌輸出路徑經常隨命名空間變動而變,但是使用的是同乙個日誌配置檔案,所以需要日誌路徑隨命名空間不同而變。

二 log4j2日誌檔案配置

1 查閱大量資料都跟我使用的不一樣,不說版本都是流氓,先說使用的日誌及版本

這個是springboot整合的log4j依賴, 直接引入即可

2 配置檔案

多次啟動springboot專案均無法獲取到變數,其在日誌資料夾建立了乙個$資料夾日誌目錄,

手動在**或者jvm啟動引數裡面設定變數,也均無法獲取到

生成檔案和原來一樣,依舊無法生成檔案。

然後再繼續修改配置檔案

當配置前加sys時,獲取不到變數就會報錯,但是專案依舊可以啟動,日誌不會輸出到檔案,控制台會又列印。

加上sys了之後在jvm引數配置或者在**裡面用system設定進去之後,日誌檔案均可以獲取到這個變數

系統變數很麻煩,再進一步看看能不能使用環境變數

先把k8s容器裡面系統變數和環境變數列印出來

發現應用可以獲取到容器的環境變數

修改日誌檔案

日誌配置檔案可以正常獲取系統變數

log4j2元件載入驗證是不能從apollo直接獲取配置的命名空間,但是log4j配置檔案可以從系統變數和環境變數裡面獲取

a在系統變數裡面獲取需要加字首sys:

b 在系統變數裡面獲取需要加 env:

log4j2配置檔案詳解

log4j 2.x版本不再支援像1.x中的.properties字尾的檔案配置方式,2.x版本配置檔案字尾名只能為 xml json 或者 jsn 系統選擇配置檔案的優先順序 從先到後 如下 1 classpath下的名為log4j2 test.json 或者log4j2 test.jsn的檔案.2...

log4j2 配置檔案解讀

日誌介面 slf4j slf4j是對所有日誌框架制定的一種規範 標準 介面,並不是乙個框架的具體的實現,因為介面並不能獨立使用,需要和具體的日誌框架實現配合使用,比如log4j logback等日誌框架。常用的日誌框架有log4j logback log4j2,log4j是apache實現的乙個開源...

log4j2配置檔案的故事

我們來詳細介紹一下 status 這是日誌自身的日誌。一般寫off,代表關閉不顯示。八個日誌級別以及優先順序排序 off 關閉 fatal 致命的 error warn info debug trace 堆疊 monitorinterval 重新整理此檔案的時間間隔,保證修改後的檔案及時生效。很顯然...