初学log4j--web中的Log4J使用

在Web应用中一般使用一个专门的Servlet来完成Log4J的配置,并保证在web.xml的配置中,这个Servlet位于

其它Servlet之前,以便在Servlet和jsp中调用。下面是这个servlet,代码如下:
import org.apache.log4j.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
   
public class Log4jInit extends HttpServlet {
     public void init() {
          String prefix =  getServletContext().getRealPath("/");//获取当前web应用的真实的根目录
          String file = getInitParameter("log4j");//从web.xml中读取初始化参数中的Log4J配置文件的位置
          if(file != null) { 
              PropertyConfigurator.configure(prefix+file); //读取Log4j配置文件,配置Log4j环境
          }
     }

}

此servlet在web.xml中配置:
</web-app>
 ........... 
 servlet>
   <servlet-name>log4j</servlet-name>
   <servlet-class>example.Log4jServlet</servlet-class>
   <init-param>
      <param-name>profile</param-name>
      <param-value>WEB-INF/log4j.properties</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
 ........... 
</web-app>

 用来配置log4J的属性文件:
log4j.rootLogger=debug, A1 , R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

 这个配置文件指定了两个输出源A1和R。前者把日志信息输出到控制台,后者是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把log4j.log重命名为log4j.log.1,然后重建一个新的 log4j.log文件,依次轮转。 

 测试文件test.jsp:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="org.apache.log4j.*" %>
<%      
    Logger logger = Logger.getLogger("test.jsp");
    logger.debug("befor test");
%>
<h1>This is login test</h1>
<%  logger.info("after test");%>

PatternLayout的格式

%r    自程序开始后消耗的毫秒数
%t    表示日志记录请求生成的线程
%p    表示日志语句的优先级别
%c    日志信息所在的类名
%m%n    表示日志信息的内容
%r    自应用启动到输出该log信息耗费的毫秒数
%d    日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l    日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

posted on 2007-09-05 01:02  Roolie'C  阅读(1961)  评论(0编辑  收藏  举报

导航