1. 程式人生 > >轉載 Log4j2在WEB項目中配置

轉載 Log4j2在WEB項目中配置

圖片 per XML 網址 修改 註意 cati pos version

最近決定在新WEB項目中使用新的日誌系統Log4j2。

官方介紹和學習文檔網址為http://logging.apache.org/log4j/2.x/

首先在WEB項目中引入以下幾個jar包:

① log4j-api-2.4.1.jar

② log4j-core-2.4.1.jar

③ log4j-web-2.4.1.jar

按照以往的思路,簡單修改web.xml中的Log配置如下:

1   <context-param>
2     <param-name>log4jConfigLocation</param-name>
3     <param-value>/WEB-INF/conf/log4j2.xml</param-value>
4   </context-param>

然後啟動項目,就出現了這個錯誤信息【ERROR StatusLogger No Log4j context configuration provided. This is very unusual】。

註意,默認的配置文件是log4j2.xml,而不是log4j.xml了。

按照網上的大神轉來轉去的一個Servlet 2.5的配置怎麽試都報這個錯誤(沒有關於3.0的配置介紹)。

沒辦法了,只有去官網仔細學習了。

我的項目使用Servlet 3.0,著重看了官網的MANUAL->Web Applications and JSPs->Servlet 3.0 and Newer這一段。

發現以下幾個註意點:

一、Tomcat 7.0.43以前的版本,需要從catalina.properties的配置項【jarsToSkip】中屏蔽掉“log4j*.jar”這一選項。

二、context-param中關於配置文件的路徑信息配置是【log4jConfiguration】而不是log4jConfigLocation。

三、context-param中需要增加配置信息【log4jContextName】。

四、Listener和Filter相關的配置在Servlet 3.0以上被log4j-web-2.4.1.jar“自動”的初始化了。

我的Tomcat版本是7.0.65(七系最新版,所以第一個問題不存在)。

重新配置web.xml後的片段如下:

技術分享圖片
1     <context-param>
2         <param-name>log4jContextName</param-name>
3         <param-value>star</param-value>
4     </context-param>
5 
6     <context-param>
7         <param-name>log4jConfiguration</param-name>
8         <param-value>/WEB-INF/conf/log4j2.xml</param-value>
9     </context-param>
技術分享圖片

重新發布項目,竟然還是報錯,不能正確的初始化和使用!

好吧,不賣關子了,這個問題最終查到了,屬於最難查的問題範疇了,就是“我原以為”系列。

1 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2     xmlns="http://java.sun.com/xml/ns/javaee"
3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
4     version="2.5">

看到了吧,web.xml中的Servlet的版本聲明寫錯了,我在項目中實際使用的是Servlet 3.0。

將【2_5】改為【3_0】,將【2.5】改為【3.0】。

OK,可以使用性能指數級提升的Log4j2了。

轉載 Log4j2在WEB項目中配置