1、引入jar包![]()
2、在web.xml配置文件中做如下配置
<servlet>
<servlet-name>Log4jInitServlte</servlet-name>
<servlet-class>com.zdys.Servlte.Log4jInitServlte</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/log4j.properties</param-value><!--log4j配置文件路径-->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Log4jInitServlte</servlet-name>
<url-pattern>/Log4jInitServlte</url-pattern>
</servlet-mapping>
3.在web-INF下创建log4j.properties配置文件 配置文件内容如下
- 其语法为:
- log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
- level: 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或
- 者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
- appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
- 例如:log4j.rootLogger=info,A1,B2,C3
Appender 为日志输出目的地,Log4j提供的appender有以下几种:





log4j.rootLogger=DEBUG,A1,A2,A3,A4,A6
### system.out ###
log4j.appender.A2 =org.apache.log4j.ConsoleAppender
log4j.appender.A2.Threshold=DEBUG
log4j.appender.A2.Target=System.out
log4j.appender.A2.encoding=UTF-8
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%x] [%-d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
### file debug ###
log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = ../logs/DServerDebug.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
###log4j.appender.A1.MaxFileSize=100MB
log4j.appender.A1.encoding=UTF-8
log4j.appender.A1.Append = true
log4j.appender.A1.Threshold = DEBUG
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%x] [%-d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
### file INFO ###
log4j.appender.A3 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.File = ../logs/DServerINFO.log
log4j.appender.A3.DatePattern='.'yyyy-MM-dd
###log4j.appender.A3.MaxFileSize=10MB
log4j.appender.A3.encoding=UTF-8
log4j.appender.A3.Append = true
log4j.appender.A3.Threshold = INFO
log4j.appender.A3.layout = org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%x] [%-d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
### file WARN ###
log4j.appender.A3 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.File = ../logs/DServerWARN.log
log4j.appender.A3.DatePattern='.'yyyy-MM-dd
###log4j.appender.A3.MaxFileSize=10MB
log4j.appender.A3.encoding=UTF-8
log4j.appender.A3.Append = true
log4j.appender.A3.Threshold = WARN
log4j.appender.A3.layout = org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%x] [%-d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
### file ERROR ###
log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.File = ../logs/DServerERROR.log
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
###log4j.appender.A4.MaxFileSize=100MB
log4j.appender.A4.encoding=UTF-8
log4j.appender.A4.Append = true
log4j.appender.A4.Threshold = ERROR
log4j.appender.A4.layout = org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%x] [%-d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
# everyday
log4j.appender.A6=org.apache.log4j.DaliyRollingFileAppender
log4j.appender.A6.File=../logs/DServerEveryDay.log
log4j.appender.A6.DatePattern=yyyyMMdd-HH'.log'
log4j.appender.A6.layout=org.apache.log4j.PatternLayout
log4j.appender.A6.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
4、创建Log4jInitServlte类
package com.zdys.Servlte;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInitServlte extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = -865926669490098235L;
public Log4jInitServlte() {
super();
}
/**
* 初始化Servlet
*/
public void init() throws ServletException {
Logger logger = Logger.getLogger(Log4jInitServlte.class);
String path = getServletContext().getRealPath("/");
String log4jpropfile = path + getInitParameter("log4j");
System.out.println("日志的配置文件路径为:"+log4jpropfile);
if(log4jpropfile != null) { PropertyConfigurator.configure(log4jpropfile); //载入配置文件
System.out.println("日志的配置文件读取成功");
}
logger.fatal("这是一条从TestServlet产生的fatal信息!");
logger.error("这是一条从TestServlet产生的error信息!");
logger.warn("这是一条从TestServlet产生的warn信息!");
logger.debug("这是一条从TestServlet产生的debug信息!");
logger.info("这是一条从TestServlet产生的info信息!");
}
/**
* doGet
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* doPost
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//设置字符编码
response.setContentType("text/html;charset=utf-8");
}
/**
* 销毁Servlet
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
}
}