簡體   English   中英

覆蓋 log4j.properties

[英]Override log4j.properties

我的 java 應用程序引用了一個使用 log4j 日志記錄的 3rd-party jar 文件。 問題是這個 jar 包含它自己的 log4j.properties 文件,這會導致我機器上的訪問被拒絕異常,但我無法控制 jar 文件來更改其內容。

我已經嘗試在我的應用程序的類路徑中添加我自己的 log4j.properties 文件,但它似乎沒有效果。 如果我嘗試使用 PropertyConfigurator 以編程方式導入我自己的設置,log4j 似乎首先加載 jar 文件的屬性文件(導致異常)。

如何短路 log4j 以忽略第 3 方 jar 文件的 log4j.properties 文件並使用我自己的文件?

有幾種方法可以覆蓋 log4j.properties,其中之一是:

  • 使用 log4j.xml請看擴展名

另一種方法是:

  • log4j.defaultInitOverride系統屬性設置為任何其他值,然后“false”將導致 log4j 跳過默認初始化過程(此過程)。
  • 將資源字符串變量設置為 log4j.configuration 系統屬性的值。 指定默認初始化文件的首選方法是通過 log4j.configuration 系統屬性。 如果未定義系統屬性 log4j.configuration,則將字符串變量資源設置為其默認值“log4j.properties”。
  • 嘗試將資源變量轉換為 URL。
  • 如果資源變量無法轉換為 URL,例如由於 MalformedURLException,則通過調用返回 URL 的 org.apache.log4j.helpers.Loader.getResource(resource, Logger.class) 從類路徑中搜索資源. 請注意,字符串“log4j.properties”構成了格式錯誤的 URL。 有關搜索位置的列表,請參閱 Loader.getResource(java.lang.String)。
  • 如果找不到 URL,則中止默認初始化。 否則,從 URL 配置 log4j。 PropertyConfigurator 將用於解析 URL 以配置 log4j,除非 URL 以“.xml”擴展名結尾,在這種情況下將使用 DOMConfigurator。 您可以選擇指定自定義配置器。 log4j.configuratorClass 系統屬性的值被視為自定義配置器的完全限定類名。 您指定的自定義配置器必須實現 Configurator 接口。

參考: http : //logging.apache.org/log4j/1.2/manual.html

如果這些都不起作用

在您的應用程序配置中添加以下語句

BasicConfigurator.configure();

它對我有用

嘗試在啟動應用程序時添加一個名為 LOG4J_CONFIGURATION_FILE 的環境變量。

暫無
暫無

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

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