为什么我不使用时会收到 SLF4J 错误?

Why am I getting a SLF4J Error when I'm not using it?

我在 Eclipse 中有一个小的单一 class Java 项目,它不使用任何形式的日志记录。我在同一工作区中打开了另一个使用 SLF4J 的项目。

当我 运行 我的程序时,它输出到 STDOUT 并从 STDIN 获取扫描仪输入,但在程序成功完成后,我将其打印到 STDERR:

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.

如果我的项目中没有包含 SLF4J(它也不是 Maven 依赖项),为什么会显示此错误?

您对使用 slf4j 日志记录的类路径具有依赖性或传递性依赖性 api。 Slf4j 以这样一种方式设置,即在加载时它希望您也提供一个实现。

在最简单的设置中,您可以将 slf4j-simple 添加为项目的依赖项以提供预期的实现。它将所有消息记录到控制台。如果您选择不添加实现,那么您将看不到该库的任何日志。

如果这是个人项目,除非您需要调试问题,否则它可能并不重要。

如果这是一个现有的生产项目,您可以根据具体情况做几件事。

  • 您可以开始使用 slf4j 通过 logback-classic 进行日志记录
  • 如果您已经在使用不同的记录器,如 log4j,您可以添加一个 jar,将 slf4j 日志记录路由到您现有的记录器(请参阅 slf4j manual 了解有关您的记录器的具体细节)
  • 您可以提供自己的日志记录实现(有关执行此操作的详细信息,请参阅 slf4j manual