在logback中抑制日志级别配置更改消息

当logback读取其配置时,它会为每个日志级别设置输出消息:

11:36:36,467 INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.apache.zookeeper.ClientCnxn] to ERROR
11:36:36,467 INFO in ch.qos.logback.classic.jul.LevelChangePropagator@2f465398 - Propagating ERROR level on Logger[org.apache.zookeeper.ClientCnxn] onto the JUL framework
11:36:36,467 INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.redacted.config] to WARN
11:36:36,467 INFO in ch.qos.logback.classic.jul.LevelChangePropagator@2f465398 - Propagating WARN level on Logger[com.redacted.config] onto the JUL framework

不幸的是,我们(有些粗糙的)警报系统会收集这些错误和警告 . (我们无法安全地收紧这个问题,因为我们可能会错过来自配置错误的日志模式的进程的问题)

有没有办法抑制这些级别更改消息?
将ch.qos.logback.classic.joran.action.LoggerAction和ch.qos.logback.classic.jul.LevelChangePropagator的日志级别设置为OFF或ERROR似乎没有任何效果 .

我们正在使用logback-classic和jul-to-slf4j,log4j-over-slf4j和jcl-over-slf4j以及使SLF4JBridgeHandler能够从我们使用的各种不同的第三方库中获取日志记录 .

回答(1)

3 years ago

也许你在logback.xml文件中启用了调试( <configuration debug=“true”>…</configuration> )?或者,更可能的是,类路径上有多个配置 . 进一步查看控制台输出,您会看到如下内容:

资源[...]在类路径上多次出现

如果是这样,那么删除'extra'logback.xml,logback-test.xml文件将导致logback not 发出那些不需要的日志事件 .

FWIW,将 ch.qos.logback.classic.joran.action.LoggerAction and ch.qos.logback.classic.jul.LevelChangePropagator 的日志级别设置为OFF或ERROR将不起作用,因为这些日志事件来自logback的内部日志记录,这不受您的logback配置控制 .