log4j学习(下)

原创 2004年09月17日 19:02:00

log4j学习(下)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

上节中小结了一下在普通的java应用程序中如何使用commons-logging 和log4j 包,这一节将小结在web应用程序中如何使用上述两个包

 

1)将commongs-logging.jar 和 log4j-1.2.8.jar 包拷贝一份到web应用 的lib目录中,如下图:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

hello

 --Module directory

   --WEB-INF

--classes

  --com

--lib

  --commons-logging.jar

  --log4j-1.2.8.jar

   --testlog4j.jsp

 

2) 配置log4j.xml 文件,放置在classes目录下(当然也可以放在任意目录下),log4j.xml内容如下:

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml:namespace prefix = log4j /> 

<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
 
<log4j:configuration xmlns:log4j="http://jakarata.apache.org/log4j/">
 
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="log.log"/>
<layout class="org.apache.log4j.PatternLayout">
 <param name="ConVersionPattern" value="%d [%t] %p - %m%n"/>
</layout>
</appender>
 
<logger name="com.log4j.test.test" additivity="false">
<level value="debug"/>
<appender-ref ref="file"/>
</logger>
 
<root>
<level value="info"/>
<appender-ref ref="file"/>
</root>
 
</log4j:configuration>

注: log4j.xml配置参数含义请参见log4j学习(上)

 

3)写一个读取log4j.xml文件的servlet 类,名叫InitServlet:

package com.log4j.test.test;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

 

import org.apache.log4j.xml.DOMConfigurator;

import org.apache.log4j.LogManager;

 

public class InitServlet

    extends HttpServlet {

 

  public void init() throws ServletException {

 

     String logFileUrl = "classes/config/log4j.xml";

     int reFreshTime = 60; //by secondes

    String prefix = getServletContext().getRealPath("/");

 

    if (getInitParameter("LOG4J_FILE_URL") != null &&

        getInitParameter("LOG4J_FILE_URL").length() > 0) {

      logFileUrl = getInitParameter("LOG4J_FILE_URL");

    }

    if (getInitParameter("REFLESH_TIME") != null &&

        getInitParameter("REFLESH_TIME").length() > 0) {

      try

      {

        reFreshTime = Integer.parseInt(getInitParameter("REFLESH_TIME"));

      }catch(NumberFormatException ex)

      {

        ex.printStackTrace();

      }

 

    }

 

    //日志初始化

    print("log4j config url :" + prefix+logFileUrl + " reflesh time is " +reFreshTime );

    try {

      DOMConfigurator.configureAndWatch(prefix+logFileUrl, reFreshTime * 1000);

    }

    catch (Exception ex) {

      ex.printStackTrace();

      print("log4j config failure !");

    }

    print("log4j config success !");

 

  }

 

  public boolean init(HttpServlet hs) {

    return true;

  }

 

  public void destory() {

    LogManager.shutdown();

    print("log4j shutdown");

  }

  private void print(String msg)

  {

    System.out.println("[in com.log4j.test.test.InitServlet.java]" + msg);

  }

 

}

 

4) 在web.xml声明该servlet ,从而让该web一发布就自动调用上面servlet配置log4j的环境变量。

web.xml :

<?xml version="1.0" encoding="UTF-8"?>

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <display-name>hello</display-name>
  <servlet>
  <!-- LOG4J 初始化 servlet -->
  <servlet-name>LogInit</servlet-name>
  <servlet-class>com.log4j.test.test.InitServlet</servlet-class>
  <init-param>
  <!-- log4j config file url -->
  <param-name>LOG4J_FILE_URL</param-name>
  <param-value>/WEB-INF/classes/log4j.xml</param-value>
  </init-param>
  <init-param>
  <!-- reflesh time by  seconds  -->
  <param-name>REFLESH_TIME</param-name>
  <param-value>5</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
</web-app>

 

 

5) ok ,经过上面的4步,log4j基本就配置好了,当该web应用一发布的时候,后台就会打印如下信息:

[in com.log4j.test.test.InitServlet.java]log4j config url :D:/program/log/hello/
WEB-INF/classes/log4j.xml reflesh time is 5
[in com.log4j.test.test.InitServlet.java]log4j config success !

6)  写一个测试的jsp页面:

testlog4j.jsp :

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="org.apache.commons.logging.*"%>

<%@ page import="com.log4j.test.TestLog4j2"%>

<%!

 private  Log log = LogFactory.getLog("testlog4j.jsp");

%>

<%

log.error("jsp log4j error");

log.warn("jsp log4j warn");

log.info("jsp log4j info");

log.debug("jsp log4j debug");

%>

This is Log4j Test !

<%=("helllo")%>

 

 

运行后后台打印信息:

testlog4j.jsp jsp_servlet.__testlog4j._jspService(__testlog4j.java:139) 2004-09-

20 17:09:23,014 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] ERROR

 - jsp log4j error

testlog4j.jsp jsp_servlet.__testlog4j._jspService(__testlog4j.java:140) 2004-09-

20 17:09:23,014 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] WARN

- jsp log4j warn

testlog4j.jsp jsp_servlet.__testlog4j._jspService(__testlog4j.java:141) 2004-09-

20 17:09:23,029 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] INFO

- jsp log4j info

 

 

呵呵,enjoy !

 

从菜鸟到入门,掌握 Log4j

Log4j(log for java)是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Sy...
  • qq_35246620
  • qq_35246620
  • 2016年12月21日 19:40
  • 2013

Log4j学习汇总—–配置详解

在实际应用中,要使Log4j在系统中运行须事先设定配置文件。配置文件事实上也就是对Logger、Appender及Layout进行相应设定。 Log4j支持两种配置文件格式,一种是XML格式的文件,一...
  • meng2602956882
  • meng2602956882
  • 2013年11月25日 21:23
  • 18787

log4j2 入门学习与总结

log4j2 学习与总结大纲: log4j2 配置文件加载 log4j2 配置文件结构图 log4j2 配置文件说明 log4j2 Appenders.child.Filter.ThresholdFi...
  • u010201484
  • u010201484
  • 2016年06月20日 21:26
  • 4262

深入学习log4J

  • 2007年07月21日 18:28
  • 115KB
  • 下载

*Log4j 学习笔记

  • 2007年09月27日 14:32
  • 216KB
  • 下载

log4j的学习笔记

  • 2011年05月13日 22:41
  • 70KB
  • 下载

log4J学习笔记

  • 2012年05月09日 20:44
  • 45KB
  • 下载

log4j详细的学习笔记.

  • 2010年04月05日 14:31
  • 126KB
  • 下载

log4j的学习资料

  • 2009年06月18日 16:37
  • 421KB
  • 下载

log4j学习查询文档

  • 2008年10月29日 09:03
  • 92KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:log4j学习(下)
举报原因:
原因补充:

(最多只允许输入30个字)