它是一个第三方应用程序,在我们的应用程序服务器上生成大量日志条目。像这样:
[03.03.10 15:21:57:250 CET] 00000180 FtpProtocolHa I org.slf4j.impl.JCLLoggerAdapter info Close connection : 10.227.10.10 - admin
[03.03.10 15:27:35:209 CET] 00000181 MinaFtpProtoc I org.slf4j.impl.JCLLoggerAdapter info [/10.227.10.10] CLOSED
++++
如何关闭 SLF4J 的此输出?我在 .war 文件中查找了 SLF4J 的一些配置,但一无所获。他们的网站也没有帮助。
slf4j 只是实际日志后端的一个漏斗(此处覆盖 jakarta commons 日志记录),这是您必须配置以消除某种消息的漏斗。对于 logback,这是适当的配置片段,位于您的
logback.xml
配置文件中:
<!-- No Tomcat debug logs -->
<configuration>
...
<logger name="org.apache.catalina.core" level="OFF" />
...
</configuration>
对于 log4j 来说非常相似。
或者,下载 http://www.slf4j.org/dist/slf4j-1.6.4.tar.gz,在其中查找 slf4j-nop-1.6.4.jar (这是无操作记录器)并将其包含在您的类路径中。当 SLF4J 类加载器看到这一点时(它会查看它可以使用的类路径中的记录器),它应该停止记录(一旦您重新启动应用程序)。
至少这样你就不需要搞乱日志配置文件...
如@sparkyspider回答所述,您可以简单地将slf4j-nop库添加到您的应用程序中。
如果使用 Maven,请将其添加到您的 pom.xml 文件中:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.36</version>
</dependency>
</dependencies>
如果使用 Gradle,请将其添加到您的 build.gradle[.kts] 文件中:
dependencies {
implementation("org.slf4j:slf4j-nop:1.7.36")
}
slf4j 是各种日志框架的日志外观。该输出来自 Apache Commons Loggin 框架适配器,它变成了另一个外观。 公共日志记录配置。
哪个日志后端,例如logback、log4j、j.u.l.,你在用吗?您需要配置后端来过滤这些消息。
此外,日志消息指向“
org.slf4j.impl.JCLLoggerAdapter
”这一事实表明呼叫者位置推断无法正常工作。 (它应该提及实际的呼叫者而不是JCLLoggerAdapter
)。如果出现以下情况,就会发生这种情况:
或
使用您的
IDE搜索以下字符串:
level="DEBUG"
。
您将在 .xml 文件中找到该文本。
去那里并使用
level="INFO"
而不是 level="DEBUG"
。
键值不区分大小写。
可能有这样的事情:
<root level="info">
...
</root>