首先需要配置web.xml里面:
<servlet-name>log4j-init</servlet-name> <servlet-class>com.free.core.util.Log4j</servlet-class> <init-param> <param-name>log4j</param-name> <param-value>/WEB-INF/classes/logxml/log4j.xml</param-value> </init-param> <load-on-startup>1</load-on-startup>
之后需要寫一個實現類
package com.free.core.util; import java.io.File; import javax.servlet.http.HttpServlet; import org.apache.log4j.xml.DOMConfigurator; public class Log4j extends HttpServlet { private static final long serialVersionUID = -4046002537330149394L; public void init() { String path = this.getServletContext().getRealPath("/"); String file = this.getInitParameter("log4j"); String log4jPath = path + file; System.setProperty("home", path); DOMConfigurator.configure(log4jPath); } }
logxml/log4j.xml配置deom:
<!-- 輸出到日志文件 按照文件大小 --> <appender name="log_roll" class="org.apache.log4j.DailyRollingFileAppender"> <!-- 設置File參數:日志輸出文件名 --> <param name="File" value="${home}/logs/SystemOut.log" /> <!-- 在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小時)和minutely(每分鍾)六個頻度,這是通過為DatePattern選項賦予不同的值來完成的。DatePattern選項的有效值為: --> <param name="datePattern" value="'.'yyyy-MM-dd" /> <!-- 是否使用BufferedWriter進行包裝,寫入數據量到達bufferSize之后寫入 --> <param name="bufferedIO" value="false" /> <!-- 設置緩存大小 --> <param name="bufferSize" value="65536" /> <!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 --> <param name="Append" value="false" /> <!-- 設置文件大小 --> <param name="MaxFileSize" value="2000KB" /> <!-- 設置文件備份 --> <param name="MaxBackupIndex" value="10" /> <!-- 設置輸出文件項目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | MSG = %m |%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMax" value="WARN" /> <param name="LevelMin" value="TRACE" /> </filter> </appender>