wml

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.appender.A_default.File=${webName.root}/WEB-INF/logs/log4j.log

      详细内容略。

问题:
      如上配置后,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}变量的值。

posted on 2006-07-27 13:25 wml 阅读(8228) 评论(6)  编辑  收藏 所属分类: 技术随笔

评论

# re: Log4j 配置 的问题 2006-08-03 07:26 dohkoos

我想你应该是配置了commons-logging.properties,将commons-logging指向了log4j。  回复  更多评论   

# re: Log4j 配置 的问题 2007-02-09 10:28 cocaine

是log4j.properties与tomcat的log4j重名的原因
你把/WEB-INF/classes/log4j.properties的log4j配置文件改个名字看(如:logConfig.properties)
因为在tomcat启动是默认去找log4j.properties,但此时Listener还没有起来,tomcat就要往\WEB-INF\logs\log4j.log 写日志就找不到了
  回复  更多评论   

# re: Log4j 配置 的问题[未登录] 2008-06-24 14:01 a

谢谢你的帖子!  回复  更多评论   

# re: Log4j 配置 的问题 2008-10-21 12:38 leornado

<!-- Leave the listener commented-out if using JBoss -->
<!--
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
-->
当使用JBOSS之外的web容器时可以将listener注释起来  回复  更多评论   

# re: Log4j 配置 的问题 2009-02-04 15:33 11

打倒阿扁  回复  更多评论   

# re: Log4j 配置 的问题 2009-03-12 15:58

# re: Log4j 配置 的问题 2007-02-09 10:28 cocaine
是log4j.properties与tomcat的log4j重名的原因
你把/WEB-INF/classes/log4j.properties的log4j配置文件改个名字看(如:logConfig.properties)
因为在tomcat启动是默认去找log4j.properties,但此时Listener还没有起来,tomcat就要往\WEB-INF\logs\log4j.log 写日志就找不到了


确实是这样呀  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: