天天看点

Log4j 配置 的webAppRootKey参数问题

1 在web.xml配置

<context-param>

<param-name>webAppRootKey</param-name>

<param-value>webName.root</param-value>

</context-param>

可以用System.getProperty("webName.root")来获取属性值。在Eclipse调试Web项目时,项目的路径是一个临时路径,不在真正的路径下,可以通过上述语句打印出属性值,来看看临时项目路径在哪里

2、Spring通过 org.springframework.web.util.WebAppRootListener

这个监听器来压入项目路径。但是如果在web.xml中已经配置了

org.springframework.web.util.Log4jConfigListener

这个监听器,则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能

3、部署在同一容器中的Web项目,要配置不同的<param-value>,不能重复

4、如果配置了

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

log4j会自己自动建立logs目录, 不需要手工显式建立空的logs目录

常见错误:多个工程目录下的web.xml文件的<param-value>webName.root</param-

value>相同,就算在tomcat的conf下配置不同的名,例如配置atcs2.xml指向另外一个工程目录,但是恰巧那个工程下的

web.xml里面也配置相同的webAppRootKey,那么将会出现其中一个工程不能够访问的问题。

网页出现经典的The requested resource (/webName/) is not available错误!

问题发现方法:在myEclipse下配置log4j,之后会将一些不会报出来的错误亦会报出来,根据信息就可以发现是相同的webAppRootKey覆盖问题。在此我的log4j的报错信息:

Web app root system property already set to different value: 'atcs.root'

= [D:\workspace2\Huadu_Atcs3\WebContent\] instead of

[D:\WorkSpace\Huadu_Atcs3\WebContent\] - Choose unique values for the

'webAppRootKey' context-param in your web.xml files!

继续阅读