log4j学习(下)

log4j学习(下)

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

 

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

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">
<!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"?>
<!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 !

 

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值