log4j2設定日誌檔案輸出到web目錄下,親測可用
阿新 • • 發佈:2019-02-14
請確認log4j-api:2.x,log4j-core:2.x,log4j-web:2.x都有並輸出到web目錄下
一、不同Servlet版本
1)在web.xm中檢視自己的Servlet版本:(通過web-app version元素來看)
web.xml v2.3:
<span style="font-size:14px;"><?xmlversion="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app> </span>
web.xml v2.4:
<span style="font-size:14px;"><?xmlversion="1.0" encoding="UTF-8"?> <web-appid="WebApp_9" version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> </web-app> </span>
web.xmlv2.5:
<span style="font-size:14px;"><?xmlversion="1.0" encoding="UTF-8"?> <web-appxmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> </web-app> </span>
web.xmlv3.0:
<span style="font-size:14px;"><?xmlversion="1.0" encoding="UTF-8"?>
<web-app
version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app> </span>
2)Servlet3.0及以上Tomcat等伺服器(需要Tomcat版本為7.0及以上)會自動載入log4j2以及在src路徑(classpath)下的log4j2.xml檔案,不過你也可以在web.xml中設定isLog4jAutoInitializationDisabled元素為true就可以禁止java伺服器自動載入log4j2.
3)如果你設定了禁用自動載入或者你的Servlet版本為2.5(log4j2不支援2.4及以下版本),可以在web.xml新增listener元素:(值得注意的是你必須把這些listener和filter放在spring等一些servlet之前哦,也就是放在第一位)
<span style="font-size:14px;"> <listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>ASYNC</dispatcher><!-- Servlet 3.0 w/disabled auto-initialization only; not supported in 2.5 -->
</filter-mapping></span>
上述資料在http://logging.apache.org/log4j/2.x/manual/webapp.html中都有哦,小哥我只不過是找關鍵部分翻譯了一下,
望你們笑納。
二、配置log4j2中檔案輸出目錄
只需在RollingFile、File等檔案輸出中設定${web:rootDir}就行了(原理是索引獲得ServletContext上下文),如下:
<span style="font-size:14px;"><Appenders>
<File name="ApplicationLog"fileName="${web:rootDir}/app.log"/>
</Appenders></span>
官方網站上有詳細介紹:http://logging.apache.org/log4j/2.x/manual/lookups.html