【发布时间】:2013-05-28 07:37:55
【问题描述】:
设置:
- Tomcat 6.0.16
- Struts 2.1.6
- Apache Commons 日志记录 1.0.4
- Log4J 1.2.17
我做了什么:
更改server.xml:
<Context path="/" .../></Context>
到
<Context path="/shop" .../></Context>
问题:
应用程序中的一切都运行良好(乍一看)。所有链接都正确且有效等。
现在我发现使用 Commons Logging(使用 Log4J)的 Loggers(通常是 Spring、Struts 和 OGNL 中的 Loggers)使用的记录器配置与以前使用的默认配置不同。直接在应用程序中使用 Log4J 的记录器在此配置下工作正常。
出于调试目的,我有一个列出所有记录器的 JSP:
Logger.getRootLogger().getLoggerRepository( ).getCurrentLoggers()
但“公共日志记录器”不再列出,但如果我调试代码,我可以验证它们是否存在。
问题:
- 如何找到其他配置/根记录器?
- 我是否必须更改与上下文路径更改相关的 struts 配置(或其他地方)中的任何内容?
- 您知道这里可能存在什么问题吗?
编辑:我越来越近了:
我使用的平台在启动时加载了最少的日志记录。在更改上下文之前,高级日志记录被立即加载,一切都很好。出于某种原因,web.xml 的侦听器(Spring 初始化等)现在在加载高级日志记录之前运行。这些类使用 apache commons logging api,并根据简单的根记录器获取分配的记录器。之后根记录器被平台替换,但公共记录器没有更新为新配置。
新问题: 正如我在下面所说,更改平台中的任何内容都不是选项。 那么为什么当我更改上下文时侦听器会提前运行,我该如何防止这种情况发生。
【问题讨论】:
标签: spring tomcat struts2 log4j apache-commons-logging