我有控制台java应用程序,它是用Maven构建的。这是 pom.xml 中的重要片段:
<dependencies>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>2.0.12</version>
</dependency>
sshd-sftp 需要 slf4j-api,所以我不能只删除 2 个最新的依赖项。
当我运行控制台应用程序时,我收到消息
SLF4J(W):未找到 SLF4J 提供程序。 SLF4J(W):默认为无操作(NOP)记录器实现 SLF4J(W):请参阅 https://www.slf4j.org/codes.html#noProviders 了解更多详细信息。
虽然 slf4j-nop 提供程序处于依赖关系中。
我错过了什么?
更新:我只需要没有关于缺少提供者的消息。我知道 System.setProperty("slf4j.internal.verbosity", "ERROR"); 的方法,并且它有效,但这种方法不适合我的情况......
更新2:我已经从这里尝试了所有maven - 找到了slf4j-api依赖项,但没有找到提供者
文档中不是很清楚,
slf4j-nop
没有做你想要的。文档的链接解释了解决方案
将众多可用提供程序中的一个(且仅一个)放置在类路径上,例如 slf4j-nop.jar、slf4j-simple.jar、slf4j-reload4j.jar、slf4j-jdk14.jar 或 logback-classic.jar 将解决问题。
解决方案是添加这些日志记录库之一并将它们配置为不记录日志。如果您选择 logback,此配置将禁用所有日志记录:
<configuration>
<root level="OFF">
<appender-ref ref="STDOUT" />
</root>
</configuration>