1

我们有许多“父”(或“库”)项目。他们在类路径中只有 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.

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

4

3 回答 3

3

如果您想要日志输出,则无法避免使用一些可用的日志记录依赖项。但是,您可以做的是使用简单绑定并将依赖项设置为<optional>true</optional>. 这有效地防止了依赖项被传递到客户端项目,同时在该特定模块中运行 main 方法时使其可用。

于 2019-05-23T08:24:01.710 回答
2

Slf4j 提供 API(接口),而不是实现,因此如果不添加一些实现/滚动您自己的 IMO,就不可能在控制台上看到实际打印的内容,并且通常要绕过此警告并使其以您要求的方式工作.

如果您不需要 logback,例如可以使用slf4j 简单绑定

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

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

于 2019-05-23T08:05:05.663 回答
0

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

正如马克所提到的,您可以使用.jdk14 .jar 文件来消除警告并进行打印。但是对于任何库,您必须添加它。

如需更多参考,您可以查看以下内容。

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

于 2019-05-23T08:18:46.527 回答