Spring 更改应用程序上下文路径会导致使用不同(未知)的日志记录配置
设置:Spring 更改应用程序上下文路径会导致使用不同(未知)的日志记录配置,spring,tomcat,struts2,log4j,apache-commons-logging,Spring,Tomcat,Struts2,Log4j,Apache Commons Logging,设置: Tomcat 6.0.16 Struts 2.1.6 Apache Commons日志记录1.0.4 Log4J 1.2.17 我所做的: server.xml中的更改: <Context path="/" .../></Context> 但是“commons logging logger”不再列出,尽管如果调试代码,我可以验证它们是否存在 问题 如何找到其他配置/根记录器 我是否必须更改struts配置(或其他地方)中与上下文路径更改相关的任何内容 你知
- Tomcat 6.0.16
- Struts 2.1.6
- Apache Commons日志记录1.0.4
- Log4J 1.2.17
<Context path="/" .../></Context>
但是“commons logging logger”不再列出,尽管如果调试代码,我可以验证它们是否存在
问题
- 如何找到其他配置/根记录器
- 我是否必须更改struts配置(或其他地方)中与上下文路径更改相关的任何内容
- 你知道这里有什么问题吗
正如我在下面所述,在平台中更改任何内容都是不可选择的那么,当我更改上下文时,为什么侦听器运行得更早,以及如何防止这种情况发生。“就目前而言,ApacheTomcat使用JDK日志记录。如果未将
commons logging.properties
文件放入源目录,则使用commons logging的默认记录器将为log4j。无论如何,Tomcat不会使用该日志记录,因为它需要一个特殊的配置来告诉它使用log4j
根记录器是您在log4j配置中使用的。比如说
log4j.rootLogger=ERROR,Console
更改上下文路径与应用程序使用的日志记录无关
我认为日志记录没有任何问题,而在最近发布的关于实现优先级的版本中没有 日志记录在多个tomcat web应用程序之间创建了一个依赖关系,因此这一事实需要加载此模块的特定顺序。将上下文重命名为“/shop”会导致另一个顺序,即
StandardContext.filterDefs
是一个简单的哈希映射,不会保留server.xml
的顺序
我可以修复在侦听器中运行所需步骤时出现的问题
web.xml
<listener>
<listener-class>com.[...].InitListener</listener-class>
</listener>
{code}
(顺便说一句,侦听器顺序应该与web.xml相同)“与日志记录无关”我知道。然而,这是我唯一改变的事情。但是我的一半日志记录者现在仍在写入同一个日志文件,但在其他方面不再受以前工作的log4j.properties的影响。更新日志记录的依赖项,您可能会影响它,最好将所有内容升级到当前版本。抱歉,我没有得到第一部分,但是更新到当前版本是没有选择的,因为我不知道是什么导致了这个问题。在阅读了更多关于commons日志的内容后,这可能是一个类加载器问题吗?你没有得到什么,你是使用maven还是使用一些工具来显示依赖关系?
log4j.rootLogger=ERROR,Console
<listener>
<listener-class>com.[...].InitListener</listener-class>
</listener>
package com.[...];
public class InitListener
{
static
{
// init Log4J, etc.
}
}