加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

log4j.xml配置方法详解

(2009-10-17 21:14:01)
标签:

杂谈

分类: Java技术

     log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改 property文件就要重打jar包,麻烦的紧。而如果采用 xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。查了些资料,终于把系统的log4j改成在xml中配置啦。
记一下记一下……嘿嘿
附:log4j的API http://logging.apache.org/log4j/docs/api/index.html
log4i.xml 文件

  1. <?xml version="1.0" encoding="GB2312" ?>  
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  4.  <appender name="FILE"  
  5.   class="org.apache.log4j.RollingFileAppender">  
  6.   <!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->  
  7.   <param name="File" value="D:/zhaotj/all.output.log" /><!-- 设置File参数:日志输出文件名 -->  
  8.   <param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->  
  9.   <param name="MaxBackupIndex" value="10" />  
  10.   <layout class="org.apache.log4j.PatternLayout">  
  11.    <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!-- 设置输出文件项目和格式 -->  
  12.   </layout>  
  13.  </appender>  
  14.   
  15.  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">  
  16.                 <!-- 设置监视器输出方式 -->  
  17.   <layout class="org.apache.log4j.PatternLayout">  
  18.    <param name="ConversionPattern"  
  19.     value="%-4r [%t] %-5p %c %x %m%n" />  
  20.   </layout>  
  21.                 <!--滤镜设置输出的级别-->  
  22.   <filter class="org.apache.log4j.varia.LevelRangeFilter">  
  23.    <param name="levelMin" value="info" />  
  24.    <param name="levelMax" value="info" />  
  25.    <param name="AcceptOnMatch" value="true" />  
  26.   </filter>  
  27.  </appender>  
  28.   
  29.  <root><!-- 设置接收所有输出的通道 -->  
  30.   <priority value="info" />  
  31.   <appender-ref ref="FILE" /><!-- 与前面的通道id相对应 -->  
  32.   <appender-ref ref="STDOUT" />  
  33.  </root>  
  34.   
  35. </log4j:configuration>  
  36.   

建好xml文件后 要写一个servlet类继承actionservlet,当工程初始化时自动加载xml配置文件

  1. package com.asiainfo;   
  2. import javax.servlet.ServletException;   
  3. import org.apache.commons.logging.Log;   
  4. import org.apache.commons.logging.LogFactory;   
  5. import org.apache.log4j.xml.DOMConfigurator;   
  6. import org.apache.struts.action.ActionServlet;   
  7.   
  8. public class ExtendedActionServlet extends ActionServlet {   
  9.         private Log log LogFactory.getLog(this.getClass().getName());   
  10.   
  11.         public ExtendedActionServlet() {}   
  12.   
  13.         public void init() throws ServletException {   
  14.             log.info(   
  15.                     "Initializing, My MyActionServlet init this System's Const Variable");   
  16.             String prefix this.getServletConfig().getServletContext().getRealPath(   
  17.                     "/");//读取项目的路径   
  18.             String file this.getServletConfig().getInitParameter("log4j");   
  19.                        //读取log4j相对路径   
  20.             String filePath prefix file;    
  21.             DOMConfigurator.configure(filePath);//加载.xml文件          
  22.             log.info("Initializing, end My Init");   
  23.             super.init();//应用了struts,此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作   
  24.         }   
  25. }   
  26.   

我们可以看到 在此类中 用了相对路径来加载xml的方法,首先通过prefix 读取了项目的路径 然后再通过读取web.xml中的log4j变量,获得log4j.xml的相对路径 两者结合 就是他的绝对路径拉
最后在web.xml中配置action信息 就可以实现加载啦
web.xml 

  1.     <servlet>  
  2.  <servlet-name>action</servlet-name>  
  3.  <servlet-class>  
  4.   com.asiainfo.ExtendedActionServlet   
  5.  </servlet-class>  
  6.  <init-param>  
  7.   <param-name>config</param-name>  
  8.   <param-value>/WEB-INF/struts-config.xml</param-value>  
  9.  </init-param>  
  10.   
  11.  <!-- tsExtend  -->  
  12.  <init-param>  
  13.   <param-name>config/tsextend</param-name><!--设备检测子模块-->  
  14.   <param-value>  
  15.    /WEB-INF/tsextend/struts-config.xml   
  16.   </param-value>  
  17.  </init-param>  
  18.                <init-param>  
  19.   <param-name>log4j</param-name><!--log4j.xml的路径-->  
  20.   <param-value>  
  21.    /WEB-INF/log4j.xml   
  22.   </param-value>  
  23.  </init-param>  
  24.  <init-param>  
  25.   <param-name>info</param-name>  
  26.   <param-value>3</param-value>  
  27.  </init-param>  
  28.  <init-param>  
  29.   <param-name>detail</param-name>  
  30.   <param-value>3</param-value>  
  31.  </init-param>  
  32.  <load-on-startup>0</load-on-startup><!--设置当工程初始时便执行-->  
  33. </servlet>  
  34.   
  35. <servlet-mapping>  
  36.  <servlet-name>action</servlet-name>  
  37.  <url-pattern>*.do</url-pattern>  
  38. </servlet-mapping> 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有