没有实现时如何获取slf4j控制台输出?

时间:2019-05-23 07:54:35

标签: java logging slf4j slf4j-api

我们有许多“父”(或“图书馆”)项目。他们在类路径中仅包含slf4j-api,但没有像logback这样的实现。

我经常想写一个快速的临时main方法来测试并获取

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

如何在不添加日志记录实现依赖项的情况下获取输出?

3 个答案:

答案 0 :(得分:2)

Slf4j提供API(接口),而不是实现,因此,如果不添加某些实现/滚动自己的IMO,就不可能看到在控制台上实际打印的内容,并且通常可以避免此警告并使其能够在你问的方式。

如果您不需要登录,则可以使用slf4j simple binding

另一种选择是使用某种桥接使slf4j api适应Java Util日志记录,然后在JDK中实现(例如slf4j-jdk14-1.8.0-beta4.jar)

如果要进行测试,则可以在范围“ test”中使用依赖项(例如,假设您使用的是maven),这样它就不会传播到工件。

答案 1 :(得分:2)

如果要输出日志,就无法解决一些日志依赖项的问题。但是,您可以使用简单绑定并将依赖项设置为<optional>true</optional>。当在特定模块中运行主要方法时,这可以有效地防止在将依赖项传递给客户端项目的同时将其变为可用。

答案 2 :(得分:0)

对于您的问题,“ 如何在不添加日志记录实现依赖项的情况下获得输出?”。在SLF4J中是不可能的。必须有一个日志记录实现。如果我阅读《 SLF4J圣经》,它说:“ Java的简单日志记录外观(SLF4J)充当各种日志记录框架(例如java.util.logging,logback,log4j)的简单外观或抽象,允许结束用户在部署时插入所需的日志记录框架”。

如Mark所述,您可以使用 .jdk14 .jar文件消除警告并进行打印。但是如果有任何库,则必须添加它。

有关更多参考,您可以在下面检查。

https://www.slf4j.org/ https://www.slf4j.org/manual.html