簡體   English   中英

配置Log4j XML配置的方法

[英]Ways to configure Log4j XML Configuration

我正在使用log4j在我的Web應用程序中記錄信息。 我選擇的是log4j.xml配置類型,而不是log4j.properties。 我記得,對於log4j.properties配置,我沒有編寫Java代碼行來查找log4j.property文件位置。 但是,對於log4j.xml文件配置,我正在明確指定要像這樣找到它

DOMConfigurator.configure("log4j.xml");//it reads file from classpath, working!

另外,測試了我的應用程序是否從源代碼中刪除了以上語句。 它似乎不起作用。 除調試語句外,均未打印

System.out.println();

我已經閱讀到默認情況下,log4j在類路徑中查找log4jproperties文件或log4j.xml文件。 我檢查了已部署的Web應用程序,log4j.xml文件在web-inf / classes中。 即使找不到log4j.xml。

是否就是上述代碼行對於Java中的log4j xml配置是必需的? 實際上,如果沒有上述明確說明,Java源代碼是否不能從類路徑中提取log4j.xml?

log4j手冊

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

  1. 將log4j.defaultInitOverride系統屬性設置為任何其他值,然后設置為“ false”將導致log4j跳過默認的初始化過程(此過程)。

  2. 將資源字符串變量設置為log4j.configuration系統屬性的值。 指定默認初始化文件的首選方法是通過log4j.configuration系統屬性。 如果未定義系統屬性log4j.configuration,則將字符串變量resource設置為其默認值“ log4j.properties”。

  3. 嘗試將資源變量轉換為URL。

  4. 如果例如由於MalformedURLException而導致無法將資源變量轉換為URL,請通過調用返回URL的org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)從類路徑中搜索資源。 。 請注意,字符串“ log4j.properties”構成了格式錯誤的URL。 有關搜索到的位置的列表,請參見Loader.getResource(java.lang.String)。

  5. 如果找不到URL,請中止默認初始化。 否則,請從URL配置log4j。 除非URL以“ .xml”擴展名結尾,否則將使用PropertyConfigurator來解析URL以配置log4j,在這種情況下將使用DOMConfigurator。 您可以選擇指定一個自定義配置器。 log4j.configuratorClass系統屬性的值將用作您的自定義配置器的完全限定的類名。 您指定的自定義配置器必須實現Configurator接口。

因此,沒有代碼,您可以(並且應該!)定義系統屬性以告知您的配置文件在哪里。 如果沒有,默認情況下它將在類路徑中搜索log4j.properties。 這是默認情況下它正在搜索的唯一文件。

系統屬性通常被定義為您的應用程序(應用程序服務器)的啟動參數,類似於-Dlog4j.configuration=path/to/your/config.xml

暫無
暫無

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

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