在WEB-INF/下建立config文件夹,创建log4j.xml的配置文件如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%c] - %m%n"/> </layout> </appender>
<!-- 记录系统运行的跟踪日志 --> <appender name="TRACE-LOGFILE" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${catalina.base}/logs/WebTest_SHS/web.log"/> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%c] - %m%n"/> </layout> </appender>
<!-- 记载Run系统的日志器, 除开数据访问层 --> <logger name="com.dream"> <level value="DEBUG"/> <appender-ref ref="TRACE-LOGFILE"/> </logger>
<!-- 全局日志记录器, 当系统被部署到用户端的时候请注释掉root项 --> <root> <priority value="info"/> <appender-ref ref="CONSOLE"/> </root></log4j:configuration>
然后,编写一个servlet,/* *@author 田峰,创建日期 2007-2-1 * *Blog: http://agan1018.spaces.msn.com */package com.dream.log;
import java.io.IOException;import java.io.PrintWriter;
import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jInit extends HttpServlet {
/** * Constructor of the object. */ public Log4jInit() { super(); }
/** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here }
/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init(ServletConfig config) throws ServletException { // Put your code here super.init(config); String prefix = getServletContext().getRealPath("/"); String file = getInitParameter("log4jConfig"); System.out.println("-------- Log4J Start --------- "); if (file != null) { DOMConfigurator.configure(prefix + file); } }
} 注意init方法,这里初始化了log4j.xml的配置。 然后在web.xml中配置servlet属性: <!-- log4j configuration --> <servlet> <servlet-name>MyLogInit</servlet-name> <servlet-class>com.dream.log.Log4jInit</servlet-class> <init-param> <param-name>log4jConfig</param-name> <param-value>WEB-INF/config/log4j.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 在程序中需要使用log的地方,方法如下: private static Logger logger = Logger.getLogger(LoginAction.class); logger.info(); logger.debug(); ......
完!