1. 程式人生 > >Log4j2實現載入不同模組的配置檔案

Log4j2實現載入不同模組的配置檔案

在有的場景下,會出現各個業務模組獨立配置自己的log4j2.xml配置檔案。如果是單個log4j2.xml,只需要放到classes目錄下即可自動載入,如果是多個分散在不同目錄下的配置檔案怎麼辦呢?

實現方法主要有兩步:
- 將log4j2升級到2.11版本;
- 獲取到這些配置檔案;
- 將這些配置檔案載入到環境變數中。

將log4j2升級到2.11版本

據我所知,最新的log4j-2.11.0.jar才支援環境變數配置多個檔案路徑,至少log4j-2.3.0版本是不支援的。會報錯,錯誤原因就是檔案路徑不正確,因為把多個檔案路徑同時作為字串傳進去了。
所以,第一步就是到官網下載最新版本的log4j2,我用的是log4j2-2.11.0,是可以的。

從專案中獲取這些配置檔案

就是寫程式碼獲取專案中所有log4j2.xml,可以設定規則log4j2-*.xml,然後遍歷專案檔案獲取到這些配置檔案。最好的方法是要求所有的配置檔案在同一個目錄下。

將配置檔案載入到環境變數

log4j2的初始化方法是支援從環境變數中獲取配置檔案的,多個配置檔案用,隔開, 環境變數的key是log4j.configurationFile
假設已經獲取到配置檔案放到一個list集合中,程式碼如下:

public static void initLog4j(){
    List<String> configFiles = getConfigFiles();
    String
fileNames = Joiner.on(",").join(configFiles); System.setProperty("log4j.configurationFile",fileNames); }

通過上述步驟即可,然後在啟動Main方法中呼叫該方法即可。

public static void main(String[] args){
    Log4jInitor.initLog4j();
}