设置:
- 雄猫 6.0.16
- Struts 2.1.6
- Apache Commons 日志记录 1.0.4
- 日志4J 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,并根据简单的根记录器获取分配的记录器。之后根记录器被平台替换,但公共记录器没有更新为新配置。
新问题:正如我在下面所说,更改平台中的任何内容都不是选项。那么为什么当我更改上下文时侦听器会更早运行,我该如何防止这种情况发生。