gpt4 book ai didi

spring - 更改应用程序上下文路径会导致使用不同的(未知的)日志记录配置

转载 作者:行者123 更新时间:2023-11-28 22:31:20 26 4
gpt4 key购买 nike

设置:

  • 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)的记录器(通常是 Spring、Struts 和 OGNL 中的记录器)使用的记录器配置与以前使用的默认记录器配置不同。直接在应用程序中使用 Log4J 的记录器在此配置下工作正常。

出于调试目的,我有一个 JSP 列出了所有记录器:

Logger.getRootLogger().getLoggerRepository( ).getCurrentLoggers()

但是“commons logging logger”不再列出,尽管如果我调试代码我可以验证它们是否存在。

问题:

  • 如何找到其他配置/根记录器?
  • 我是否必须更改 struts 配置(或其他地方)中与上下文路径更改相关的任何内容?
  • 知道这里可能有什么问题吗?

编辑:我越来越近了:

我使用的平台在启动时加载了最少的日志记录。在更改上下文之前,高级日志记录随后立即加载,一切都很好。由于某种原因,web.xml 的监听器(Spring 初始化等)现在在加载高级日志记录之前运行。这些类使用 apache commons logging api 并根据简单的根记录器获取分配的记录器。紧接着,根记录器被平台替换,但公共(public)记录器未使用新配置更新。

新问题:正如我在下面所说的,改变平台中的任何东西都是没有选择的。 那么为什么当我更改上下文时监听器运行得更早,我该如何防止这种情况。

最佳答案

目前,Apache Tomcat 使用 JDK 日志记录。如果您没有将 commons-logging.properties 文件放入您的源目录,则使用 commons 日志记录的默认记录器将是 log4j。无论如何,Tomcat 不会使用该日志记录,因为它需要一个特殊的配置来告诉它使用 log4j。

根记录器是您在 log4j 配置中使用的。例如

log4j.rootLogger=ERROR,Console  

更改上下文路径与应用程序使用的日志记录无关。

我没有看到任何关于日志记录的问题,而是在最近的版本中关于实现优先级的问题。

关于spring - 更改应用程序上下文路径会导致使用不同的(未知的)日志记录配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com