同一个Tomcat下发布多个使用Log4j的项目报错

来源:互联网 发布:68淘宝小号网站首页 编辑:程序博客网 时间:2024/06/04 18:29
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListenerjava.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [/home/wh/apache-tomcat-7.0.54/webapps/UrgentSMS/] instead of [/home/wh/apache-tomcat-7.0.54/webapps/TourismBigData/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:148)at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:45)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)at java.lang.Thread.run(Thread.java:722)

结论:原因日志已经说的很明确,我这里只是将我遇到的错误做个记录,在同一个Tomcat下发布多个使用Log4j的项目,log4j.properties配置文件配了这么一句话 log4j.appender.infoLog.File=${webapp.root}/logs/info.log,
但是没有在项目中的web.xml中明确加上
< context-param>
< param-name>webAppRootKey< /param-name>
< param-value>webapp.two< /param-value>
< /context-param>
这段配置信息,系统就会默认webAppRootKey的值是webapp.root,webapp.root对应的是项目的根路径,所以当有两个使用该值的项目同时在一个Tomcat下面时会报错,因为一个key只能保存一个value,后初始化的会替换先初始化的,所以小伙伴们遇到这样的问题就去每个项目的web.xml里面给webAppRootKey重新赋个值吧,不能重复,因为是key嘛

0 0