博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)
阅读量:6910 次
发布时间:2019-06-27

本文共 2624 字,大约阅读时间需要 8 分钟。

在tomcat下部署两个或多个项目时

web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,如下:

webAppRootKey
webApp.root

最好每个项目的参数值不同,以免引起项目冲突

 严重: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener

java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps\DRMProject\] instead of [C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps\DRMSn\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

 

对多个项目要对webAppRootKey进行配置,这里主要是让log能将日志写到对应项目根目录下,如我配置这两个项目的webAppRootKey为

webAppRootKey
webapp.root1

2

webAppRootKey
webapp.root1

这样就不会出现冲突了。

定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。

然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。

Log4j 配置 的webAppRootKey参数问题

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

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

<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"。但最好设置,以免项目之间的名称冲突。

定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。

然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。

此参数用于后面的“Log4jConfigListener”-->

webAppRootKey
webName.root

<!--由Sprng载入的Log4j配置文件位置-->

log4jConfigLocation
/WEB-INF/log4j.properties

<!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond-->

log4jRefreshInterval
60000

<!-- Web 项目 Spring 加载 Log4j 的监听 -->

org.springframework.web.util.Log4jConfigListener

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}变量的值。

http://blog.csdn.net/sghys/archive/2008/12/24/3587744.aspx

可用

log4jConfigLocation
classpath:log4j.properties

解决把log4j.properties存放在/WEB-INF/classes/log4j.properties启动Tomcat时报错问题

转载于:https://www.cnblogs.com/lijingran/p/7745199.html

你可能感兴趣的文章
列表删除页代码
查看>>
亚马逊的EC2云计算系统
查看>>
分别让div浮层靠左靠右和居中
查看>>
如何解决 JMeter 通过 JDBC 访问 Oracle 和 MySQL 的问题 (留言中有 Test Plan 实例下载)...
查看>>
19.7 主动模式和被动模式;19.8 添加监控主机;19.9 添加自定义模板19.10处理图形中的...
查看>>
SCOM2012功能测试(14)—创建.NET应用程序性能监控
查看>>
我的友情链接
查看>>
IEnumerable和IEnumerable<T>接口
查看>>
重定向redirect与跳转forward区别
查看>>
CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹
查看>>
linux日志管理
查看>>
A.约数个数的和
查看>>
BZOJ1041:[HAOI2008]圆上的整点(数论)
查看>>
c# small tips
查看>>
双色球
查看>>
git 添加tab补全
查看>>
web.xml配置
查看>>
Leetcode 67 二进制求和
查看>>
素数判断的多种方法
查看>>
linux上我认为最适合编程和使用的字体
查看>>