如何使用Log4j?(转)

Web Server : Tomcat 5.0.30
Spring :  1.2.8

为了让Web项目中的Spring 使用Log4j做如下配置:

1、在web.xml中添加如下内容:

      <!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"。但最好设置,以免项目之间的名称冲突。
              定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。
              然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。
              此参数用于后面的“Log4jConfigListener”-->
      <context-param>
              <param-name>webAppRootKey</param-name>
              <param-value>webName.root</param-value>
      </context-param>

      <!--由Sprng载入的Log4j配置文件位置-->
      <context-param>
              <param-name>log4jConfigLocation</param-name>
              <param-value> /WEB-INF/log4j.properties</param-value>
      </context-param>

      <!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond-->
      <context-param>
              <param-name>log4jRefreshInterval</param-name>
              <param-value>60000</param-value>
      </context-param>

        <!-- Web 项目 Spring 加载 Log4j 的监听 -->
        <listener>
                <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>

2、编写log4j.properties属性文件,使用web.xml配置的全局变量:

log4j.rootCategory=INFO, stdout , R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=${webName.root}/WEB-INF/logs/log.log

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender  
 
log4j.appender.R.DatePattern  ='.'yyyy-MM-dd 

log4j.appender.R.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n

log4j.logger.org.springframework=DEBUG

log4j.logger.com.ibatis.db=WARN

log4j.logger.org.hibernate=DEBUG

log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

log4j.logger.com.myproject=DEBUG


问题:
            如上配置后,log4j.properties属性文件的存放位置,应在Web项目中的 WEB-INF下,而不是默认的/WEB-INF/classes下。
      可在做spring 的单元测试时,默认读取classes下的log4j.properties,不知该问题如何解决?

      如果把log4j.properties存放在/WEB-INF/classes/log4j.properties下的话,会在启动Tomcat时报错:
      
      log4j:ERROR setFile(null,true) call failed.
      java.io.FileNotFoundException: \WEB-INF\logs\log4j.log (系统找不到指定的路径。)

      可在\WEB-INF\logs\log4j.log 却可以看到log4j.log文件已存在Spring的日志输出信息。
      分析可能是其他的类在加载log4j.properties时,无法读取${webName.root}变量的值。

来源:http://www.blogjava.net/wml/archive/2006/07/27/60316.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值