Xml 春天的天气
我收到了这个错误消息 [严重:向类org.springframework.web.util.Log4jConfigListener的侦听器实例发送上下文初始化事件时出现异常 java.lang.IllegalStateException:Web app根系统属性已设置为不同的值:“webapp.root”=[C:\Users\jaanlai\Documents\NetBeansProjects\absSovellus\build\Web]而不是[C:\Users\Administrator\Documents\NetBeansProjects\keycard2\build\Web]——请为Web.xml文件中的“WebApprotKey”上下文参数选择唯一值Xml 春天的天气,xml,spring,Xml,Spring,我收到了这个错误消息 [严重:向类org.springframework.web.util.Log4jConfigListener的侦听器实例发送上下文初始化事件时出现异常 java.lang.IllegalStateException:Web app根系统属性已设置为不同的值:“webapp.root”=[C:\Users\jaanlai\Documents\NetBeansProjects\absSovellus\build\Web]而不是[C:\Users\Administrator\Do
这很奇怪,因为我的文件中没有定义任何WebApprotKey。它是什么?看起来您的应用程序服务器中有几个Web应用程序具有默认的
Log4jConfigListener
配置
Log4jConfigurationListener
的默认行为是将webapp root作为名为webapp.root
的系统属性公开,以允许您在指定日志文件位置时使用它。但是,如果具有相同名称的系统属性已经存在,则会引发异常
您可以使用名为
的WebApprotKey
为该系统属性配置每个应用程序名称,或者通过将Log4jConfigListener
名为的log4jExposeWebAppRoot
设置为false
来禁用系统属性的公开
另请参见:
Log4JWebConfigure
正在使用它。它将webapp根作为系统属性公开,可以在log4j配置文件中使用,如下所示:
log4j.appender.testfile.File=${webapp.root}/WEB-INF/testlog.log
如果出于某种原因,希望定位相对于webapp根目录的日志,则可以使用此选项
您遇到的问题是一些容器(特别是Tomcat)不要维护系统属性的每个webapp映射。如果不指定webAppRootKey
,Spring会将其默认为webapp.root
。由于您在同一容器中运行两个应用,因此尝试启动的第二个应用会看到webAppRootKey
已设置(通过默认设置),并引发错误。否则,webAppRootKey
将设置不正确,您可能会在另一个webapp中看到来自一个webapp的日志
您可以使用web.xml
中的上下文参数指定不同的webAppRootKey
,如下所示:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root.one</param-value>
</context-param>
在您的log4j中。这应该可以解决冲突。以防其他人在没有解决问题的情况下执行了上述操作: 我们的webapp正确设置了WebApprotKey,但我仍然遇到了上述异常。重新启动Glassfish并重新部署相同的war文件有效,如图所示。
<context-param>
<param-name>log4jExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>
log4jExposeWebAppRoot
假的
这为我解决了问题。归功于:-
如果您使用
logback
而不是log4j
并得到相同的错误,这将解决此问题:
<context-param>
<param-name>logbackExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>
logbackExposeWebAppRoot
假的
请参阅并获取解决方案,如果404-请求的源不可用,这会阻止应用程序运行吗?@michaeljackson4ever:我想不会。毕竟,您可以通过删除Log4jConfigListener
来检查它。我遇到了应用程序无法运行的问题。设置根键没有帮助。请注意,我们也有同样的问题您的解决方案解决了这个问题。(不要让其他人认为问题只存在于Tomcat)我在JBoss上也遇到了这个问题,你的解决方案对我很有效。@MichaelLucas Websphere v8上的问题除了日志记录之外还有什么影响吗?@indybee…不,我不这么认为。很久以前很难记住,但我想它只影响了log4j.nice,我打算在maven中定义一个属性,然后过滤web.xml。但后来就不会了在开发中,我使用mongrel eclipse插件在我的Web应用程序中启动tomcat。谢谢,它也帮助了我!63 v 52 v 18 v alsoRans,在第38季度,截至20191114。
<context-param>
<param-name>logbackExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>