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有以下几种:
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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 {
String path = getServletContext().getRealPath("/"); String log4jpropfile = path + getInitParameter("log4j"); System.out.println("日志的配置文件路径为:"+log4jpropfile); if(log4jpropfile != null) { PropertyConfigurator.configure(log4jpropfile); //载入配置文件 System.out.println("日志的配置文件读取成功"); }Logger logger = Logger.getLogger(Log4jInitServlte.class);
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 } }