我如何配置 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 中运行。
原文由 Derek Mahar 发布,翻译遵循 CC BY-SA 4.0 许可协议
Holger Hoffstätte 的 诊断 是正确的,即重复的类路径条目消息是 Logback 如何计算类路径条目的 错误 的症状。 Robert Elliot 还在 Logback 用户邮件列表 的一个 线程 中 描述 了这个问题。根据 Robert 和其他人在 SLF4J 邮件列表上的相关讨论中的说法,当使用 Logback 的应用程序在 WebLogic 容器中运行时,由于 WebLogic 类加载器的操作方式,Logback 报告
logback.xml
的重复类路径条目配置文件。然而,无论 WebLogic 类加载器是否应该只报告唯一的类路径条目,Logback 肯定应该只计算唯一的类路径条目,这样它就不会打印这个令人困惑的虚假消息。我已经为 LBCLASSIC-159 实施了一个 修复程序,它基本上按照 Robert Elliot 的建议执行并使用一个集合而不是一个列表来保存类加载器返回的资源,从而有效地消除了任何重复的类路径资源。我已经使用 Logback 0.9.24、SLF4J 1.6.1 和 WebLogic 10.3.2 成功测试了修复。正如 Thorbjørn 在他的 回答 中预测的那样,有了这个修复,Logback 不再向标准输出显示重复的类路径条目状态消息(或任何其他信息性消息)。
我希望维护人员将我的修复程序集成到主 Logback 源代码存储库 中,并将其包含在下一个版本中。