【发布时间】:2012-07-11 13:39:15
【问题描述】:
是否有强制 slf4j 使用特定的日志记录提供程序(在我的情况下为 logback)?在他们的文档中:
在类路径上发现多个绑定
SLF4J API 旨在一次绑定一个且仅一个底层日志框架。如果类路径上存在多个绑定,SLF4J 将发出警告,列出这些绑定的位置。 当类路径上有多个绑定可用时,请选择一个且仅一个您希望使用的绑定,然后删除其他绑定。例如,如果您在类路径上同时具有 slf4j->simple-1.6.6.jar 和 slf4j-nop-1.6.6.jar 并且希望使用 nop (>no-operation) 绑定,则删除 slf4j-类路径中的 simple-1.6.6.jar。如果无法删除多余的绑定,SLF4J 仍将绑定一个日志框架/实现。从 1.6.6 版本开始,SLF4J 将命名它实际绑定的框架/实现类。
注意 SLF4J 发出的警告只是一个警告。
就我而言,我在类路径中有 log4j.jar、slf4j-log4j12.jar、log4j-over-slf4j.jar 和所有 logback jar。我知道将slf4j-log4j12.jar 和log4j-over-slf4j.jar 放在一起是错误的,但是我的项目很大,查找和排除maven 依赖项并不总是那么简单。在这种情况下 slf4j 甚至没有打印任何警告,因为我们只使用 logback 配置。我花了一天的时间才理解这个罐子地狱。
例如,我只想通过 JVM 参数强制 slf4j 使用 logback,这样它就可以打印警告,并且我可以在将来排除 jars。
【问题讨论】:
标签: logging log4j slf4j logback