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

SEVERE: 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' = [/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嘛

猜你喜欢

转载自blog.csdn.net/u011207553/article/details/61197014