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

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

<!-- 应用路径  -->
<context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param>

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

严重: 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为

 <context-param>  <param-name>webAppRootKey</param-name> <param-value>webapp.root1</param-value> </context-param> 

2

 <context-param>  <param-name>webAppRootKey</param-name> <param-value>webapp.root1</param-value> </context-param> 

这样就不会出现冲突了。

定义以后,在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”-->

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

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

可用

<context-param><param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param>

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

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

在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)相关推荐

  1. linux部署tomcat项目404_一个tomcat下部署多个项目或一个服务器部署多个tomcat

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听一个tomcat下部署多个项目或一个服务器部署多个tomcat 最近需要把两个项目同时部署到服务器上,于是研究了一下 ...

  2. tomcat web.xml配置

    tomcat 禁用不安全的http请求方式(转)  1:我的配置 web.xml(url下禁用的请求方式)  <security-constraint>  <web-resource ...

  3. Tomcat web.xml配置参数详解

    Apache Tomcat Configuration Reference - The Context Container https://tomcat.apache.org/tomcat-5.5-d ...

  4. Gir合并merge两个完全不同Git项目时出现fatal: refusing to merge unrelated histories的解决办法

    1.问题背景 我们有时会有这样一个疑问:Git会知道两个项目是毫不相干的嘛?如果我们合并merge两个毫不相干的项目会发生什么? 其实Git是可以判断两个项目是否是毫不相干的,判断的依据是两个项目的第 ...

  5. tomcat同时部署两个项目的问题

    最近直接把两个项目打成war包在tomcat下发布,出现了很多莫名奇妙的问题,就是不能发布成功,只能有一个项目能成功,在网上查了很多方法,以为是两个项目中jar包出现冲突,也按照网上的方法把两个项目中 ...

  6. 一个tomcat下部署不同端口多个应用

    通过配置tmcat的server.xml来实现多端口多应用: <?xml version='1.0' encoding='utf-8'?><Server port="800 ...

  7. 环境部署(java安装和配置,Tomcat安装和配置)(tomcat下部署war包)

    1,上传环境部署安装包到服务器上 2,解压安装包,并部署java #  tar -xf jdk-8u201-linux-x64.tar.g # mkdir /usr/java # cp  jdk1.8 ...

  8. 在Tomcat下部署Jenkins

    部署Jenkins有很多种方法,今天我们介绍下如何通过Tomcat轻松部署Jenkins 一.Why Linux,Not Windows 一般都会将Jenkins这种服务类的系统,部署在Linux端( ...

  9. linux mule,在Tomcat下部署Mule

    原文是在mule的官网上,在这里,我做了一个简单的翻译,水平有限,有什么不足的地方,请多多包涵~ 在Tomcat中安装Mule 为了可以热部署你的Mule应用,将Mule安装在Tomcat下需要如下的 ...

最新文章

  1. 2019 ICPC Asia Nanjing Regional J.Spy(KM算法O(n^3)板子题)
  2. Java Servlet关键点详解
  3. 修改android init.rc,busybox及bash在android中的安装及init.rc修改
  4. UWP 推荐 - 限时免费的RSS阅读器《RSS 追踪》登录 Windows 10
  5. 【线性代数】 解行列式的基本方法
  6. 1004 C语言设置测试数据个数和测试结束标志
  7. 添加Maven(mvn)、sbt的国内仓库
  8. 我对骨骼动画的理解(最精减的骨骼动画类)
  9. Egret入门学习日记 --- 第十四篇(书中 5.4~5.6节 内容)
  10. AD09导出光绘文件(Gerber)
  11. pc系统安全问题让你防不胜防--安装系统屏保时,偶然发现没有安装的ie工具栏软件baidu_jpwb(Just Under/WINDOWS)!
  12. UE4 Runtime下导入IES贴图为TextureLightProfile
  13. 计算机专业毕业设计题目大全——各种类型系统设计大全
  14. 数据库系统原理与应用教程(006)—— 编译安装 MySQL5.7(Linux 环境)
  15. IDE也卷了,微软杀入嵌入式IDE
  16. python123数字转换_Python 中文(大写)数字转阿拉伯数字(转)
  17. 【RW007系列综合实战3】柿饼派上怎样更新RW007固件和驱动?
  18. 流量直升机-千牛插件功能列表
  19. 全网最全ebay大数据面经合集
  20. 员工与客户之间就是一个微信

热门文章

  1. 百度编辑器ueditor每次编辑后多一个空行的解决办法
  2. UIAlertview改变按钮位置 大小
  3. jsonSuggest插件如何在使用前激活
  4. 制造型企业如何降低成本提升核心竞争力
  5. Windows 服务全攻略(2)
  6. 【前端来刷LeetCode】两数之和与两数相加
  7. js实现轮播图,模拟flash上下滚动(原生JS,没有任何框架)
  8. First Unique Character in a String(leetcode387)
  9. 脚本1)启动jetty的脚本
  10. jsp自定义标签学习