簡體   English   中英

使用 Log4j 創建 Uber/Fat Jars

[英]Creating Uber/Fat Jars with Log4j

我正在使用 maven 程序集插件創建一個超級 jar。 我的程序的依賴項之一是一個應用程序,它既可以通過線程在我的程序內部啟動,也可以獨立啟動,因為它是它自己的 uberjar。

我的問題是兩個應用程序都使用 log4j2 並且在資源文件夾中都有一個 log4j2.xml。 當 maven 使我的應用程序成為 uberjar 時,它會使用依賴項中的一個覆蓋我的應用程序 log4j.xml 配置文件。 有沒有辦法解決這個問題,同時仍然允許兩個應用程序在資源文件夾中都有配置文件?

當 Log4j 啟動時,它將按照從高到低的加權順序定位配置:

  1. Log4j 將檢查“log4j.configurationFile”系統屬性,如果設置,將嘗試使用與文件擴展名匹配的 ConfigurationFactory 加載配置。
  2. 如果未設置系統屬性,則 ConfigurationFactory 將在類路徑中查找 log4j2-test.properties。
  3. 如果沒有找到這樣的文件,YAML ConfigurationFactory 將在類路徑中查找 log4j2-test.yaml 或 log4j2-test.yml。
  4. 如果沒有找到這樣的文件,JSON ConfigurationFactory 將在類路徑中查找 log4j2-test.json 或 log4j2-test.jsn。
  5. 如果沒有找到這樣的文件,XML ConfigurationFactory 將在類路徑中查找 log4j2-test.xml。
  6. 如果找不到測試文件,屬性 ConfigurationFactory 將在類路徑上查找 log4j2.properties。
  7. 如果無法找到屬性文件,YAML ConfigurationFactory 將在類路徑中查找 log4j2.yaml 或 log4j2.yml。
  8. 如果找不到 YAML 文件,則 JSON ConfigurationFactory 將在類路徑上查找 log4j2.json 或 log4j2.jsn。
  9. 如果找不到 JSON 文件,則 XML ConfigurationFactory 將嘗試在類路徑上找到 log4j2.xml。
  10. 如果找不到配置文件,將使用 DefaultConfiguration。 這將導致將 output 到 go 記錄到控制台。

因此,最簡單的方法是將您的 log4j.xml 移動到資源目錄中的子文件夾,並使用屬性“log4j.configurationFile”定義該子文件夾。 否則只需切換到屬性基礎配置文件“log4j2.properties”。 也許這個轉換器可以幫助你。

還請查看 文檔(這就是我從中獲得此列表的地方)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM