2016-06-24 145 views
0

我有一個庫(非可執行)的jar文件,我需要將log4j.properties放在jar外。log4j.properties不可執行jar文件外

在可執行jar文件中,我可以通過-Dlog4j.configuration傳遞路徑。但在這種情況下我怎麼能做到這一點?

+0

嘗試http://stackoverflow.com/questions/8775303/read-properties-file-outside-jar-file –

+0

不,這對我不起作用。我的是不可執行的jar文件和log4j.properties – Arjun

+0

你如何使用這個jar文件? –

回答

0

https://logging.apache.org/log4j/1.2/manual.html

確切的默認初始化算法定義如下:

  1. 的log4j.defaultInitOverride系統屬性設置爲任何其他值,那麼「假」將導致log4j的跳過默認初始化程序(這個程序)。
  2. 將資源字符串變量設置爲log4j.configuration系統屬性的值。指定默認初始化文件的首選方法是通過log4j.configuration系統屬性。如果未定義系統屬性log4j.configuration,則將字符串變量資源設置爲其默認值「log4j.properties」。
  3. 嘗試將資源變量轉換爲URL。
  4. 如果資源變量無法轉換爲URL(例如,由於MalformedURLException),則通過調用org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)從類路徑中搜索資源返回一個URL。請注意,字符串「log4j.properties」構成格式不正確的URL。 請參閱Loader.getResource(java.lang.String)以獲取搜索的位置列表。
  5. 如果找不到URL,請中止默認初始化。否則,從URL配置log4j。 PropertyConfigurator將用於解析URL以配置log4j,除非URL以「.xml」擴展名結尾,在這種情況下將使用DOMConfigurator。你可以選擇指定一個自定義配置器。 log4j.configuratorClass系統屬性的值將作爲自定義配置程序的完全限定類名稱。您指定的自定義配置器必須實現配置器界面。

您可以使用PropertyConfigurator.configure初始化log4j的,並通過系統屬性,另一個配置文件,環境變量等

但是指定你log4j.properties的路徑,你可能不希望有爲您的JAR單獨記錄機制/配置,而不是讓它使用調用它的應用程序中的一個或多個。