禁止所有向控制台输出日志?

2022-08-31 17:31:56

如何配置 Logback 以禁止显示其到控制台的所有输出(标准输出)?特别是,我希望禁止(或重定向)Logback自己的日志消息,如下所示:

16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,923 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:50:25,924 |-INFO in ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter@1a15291 - Will scan for changes in file [/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml] every 60 seconds. 

我需要禁用所有到标准输出的日志记录,因为我们的生产环境不允许应用程序将任何消息打印到标准输出。

注意:我使用的是 Logback 0.9.21、SLF4J 1.6.0,我们的应用程序在 WebLogic 10.3.2 中运行。


答案 1

仅当至少满足以下条件之一时,才会显示这些消息:

  • 已在日志备份文件中启用调试.xml文件
  • 您的配置中存在错误。这里就是这种情况 - logback抱怨找到多个配置文件。
  • 如果您的环境提供了冲突的文件,则存在类路径问题。(这个是我昨天想到的,是这个问题的真正原因)。
  • (日志备份中存在错误 - 已发生)

更正问题,这些消息应该消失。


答案 2

Holger Hoffstätte 的诊断是正确的,即重复的类路径条目消息是 Logback 如何计算类路径条目的错误症状。Robert Elliot还在Logback用户邮件列表上的一个线程描述了这个问题。根据 Robert 和其他人在 SLF4J 邮件列表上的相关讨论,当使用 Logback 的应用程序在 WebLogic 容器中运行时,由于 WebLogic 类装入器的运行方式,Logback 会报告配置文件的重复类路径条目。但是,无论 WebLogic 类装入器是否应该只报告唯一的类路径条目,Logback 当然应该只计算唯一的类路径条目,这样它就不会打印这种令人困惑的虚假消息。logback.xml

我已经为LBCLASSIC-159实现了一个修复程序,它基本上按照Robert Elliot的建议进行操作,并使用集合而不是列表来保存类装入器返回的资源,从而有效地消除了任何重复的类路径资源。我已经成功地用Logback 0.9.24,SLF4J 1.6.1和WebLogic 10.3.2测试了这个修复程序。正如Thorbjørn在他的答案中预测的那样,通过此修复,Logback不再向标准输出显示重复的类路径条目状态消息(或任何其他信息性消息)。

我希望维护者将我的修复程序集成到主Logback源代码存储库中,并将其包含在下一个版本中。


推荐