gpt4 book ai didi

java 日志记录噩梦和 log4j 与 spring + tomcat6 的行为不符合预期

转载 作者:行者123 更新时间:2023-11-29 04:01:59 25 4
gpt4 key购买 nike

我有一个 spring 应用程序,它配置了 log4j(通过 xml)并在 Tomcat6 上运行,在我们通过 Maven 添加一堆依赖项之前它运行良好。在某些时候,整个应用程序刚刚开始记录它应该声明到 log4.xml 中的部分内容

“在这里吐槽一下”为什么在 Java 世界中日志记录必须如此困难?为什么突然间一个很好的应用程序开始表现得如此奇怪,为什么它如此难以调试?

几天来我一直在阅读并试图解决这个问题,但到目前为止还没有成功,希望这里的一些专家能给我一些见解

我添加了 log4j 调试选项来检查 log4j 是否正在读取配置文件及其值,这就是它显示的部分

log4j: Level value for org.springframework.web is  [debug].
log4j: org.springframework.web level set to DEBUG
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.compass] additivity to [true].
log4j: Level value for org.compass is [debug].
log4j: org.compass level set to DEBUG

如您所见,为 compass 和 spring.web 启用了调试,但它只显示两个包的“INFO”级别。我的 log4j 配置文件没有任何特别之处,只是一个普通的 ConsoleAppender

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>

完成这项工作的诀窍是什么?我在这里的误解是什么?有人能给我指出正确的方向并解释我如何才能使这个日志记录困惑更加防弹吗?

最佳答案

可能不是 log4j 正在执行日志记录,因此您的 log4j 配置将被忽略。使用 Commons Logging 的 Spring 日志,这是一个可以委托(delegate)给各种日志框架的 API,包括 log4j。为了决定使用哪个实现,公共(public)日志记录会查看类路径。

如果您添加了一个将其自己的日志记录实现拖到类路径中的依赖项,则公共(public)日志记录现在可能会使用其他实现。

我建议在调用日志工具时设置断点,并跟踪执行以查看使用了哪个日志实现。

关于java 日志记录噩梦和 log4j 与 spring + tomcat6 的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2852906/

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