【问题标题】:Tomcat 7: Setting logging level for org.springframework librariesTomcat 7:为 org.springframework 库设置日志记录级别
【发布时间】:2012-04-20 23:13:35
【问题描述】:

在 Tomcat 7 上,我正在尝试从我正在使用的 Spring 库中获取日志记录输出。

在Tomcat的logging.properties我有:

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

java.util.logging.ConsoleHandler.level = ALL
1catalina.org.apache.juli.FileHandler.level = ALL

#this does not change the logging level...
org.springframework.level = ALL

# this does change the logging level...
javax.faces.level = ALL
com.sun.faces.level = ALL

如您所见,我现在确实从 JSF 获得了日志消息,但没有从 Spring 获得日志消息。

为什么会这样,我在这里缺少什么?

更新:

我注意到,当我从类路径中删除 log4j.jar 时,我确实从 Spring 获得了日志记录。但是当我将 log4j.jar 添加到类路径时,来自 Spring 的日志记录消失了。 你能解释一下原因吗?

顺便说一句,我的类路径中确实需要 log4j,因为我使用的其他 jar 之一在其代码中明确引用了 log4j。

【问题讨论】:

    标签: spring debugging tomcat logging java.util.logging


    【解决方案1】:

    我将使用 slf4j 日志记录与 Tomcat 日志记录分开。使用应用程序日志记录而不是容器日志记录。

    参考资料:

    http://blog.springsource.org/2009/12/04/logging-dependencies-in-spring/ How do I configure Spring and SLF4J so that I can get logging?

    示例应用: https://src.springframework.org/svn/spring-samples/mvc-basic/trunk/

    【讨论】:

    • 你有两个不同的 log4j 可能发生冲突。我再次推荐使用 slf4j 和应用级日志记录
    • 我已阅读您提供的链接。他们不清楚为什么使用公共日志记录 (JCL) 应该是一个可能会阻止日志记录的问题。但是从链接看来,我的类路径中应该有 JCL 或 SLF4J,而不是两者(?)。好吧,我无法删除 log4j 或 JCL,因为我使用的一些 jar 明确引用了它们。还有一种方法可以让我在 Tomcat 上获取 Spring 的日志消息吗?
    • 看看我发给你的例子。我建议您以相同的方式设置应用程序日志记录。
    猜你喜欢
    • 2016-11-27
    • 2011-05-06
    • 2023-03-23
    • 2017-07-10
    • 1970-01-01
    • 2012-04-01
    • 2020-04-16
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多