java 如何关闭SLF4J的日志记录?

ilmyapht  于 2023-03-28  发布在  Java
关注(0)|答案(6)|浏览(638)

这是一个第三方应用程序,在我们的应用服务器上生成大量日志条目。如下所示:

[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的配置,但什么都没有。他们的网站也没有帮助。

klsxnrf1

klsxnrf11#

slf4j只是一个到实际日志后端的通道(这里覆盖jakarta commons logging),这是你必须配置的一个,以摆脱某种类型的消息。对于logback,这是你的logback.xml配置文件中的适当配置片段:

<!--  No Tomcat debug logs -->
    <configuration>
    ...
        <logger name="org.apache.catalina.core" level="OFF" />
    ...
    </configuration>

对于log4j,情况非常相似。

camsedfj

camsedfj2#

或者,下载http://www.slf4j.org/dist/slf4j-1.6.4.tar.gz,查找slf4j-nop-1.6.4.jar(这是无操作日志记录器),并将其包含在类路径中,当SLF 4J类加载器看到它时(它查看类路径中有哪些日志记录器可以使用),它应该停止日志记录(一旦重启应用)。
至少这样你就不需要弄乱日志配置文件了。

8cdiaqws

8cdiaqws3#

slf4j是各种日志框架的日志facade。输出来自Apache Commons Loggin框架适配器,它变成了另一个facade。Commons Logging Configuration。

8fsztsew

8fsztsew4#

您使用的是哪个日志后端,例如logback、log4j、j.u.l.?您需要配置后端来过滤这些消息。
此外,日志消息指向“org.slf4j.impl.JCLLoggerAdapter”的事实表明调用者位置推断 * 未 * 正确工作。(它应该提到实际调用者而不是JCLLoggerAdapter)。如果出现以下情况,则可能发生这种情况:
1.您正在使用旧版本的SLF4J

1.调用者正在使用类似slf4j的 Package 器,或者有自己的日志API,这不能正确地推断调用者的位置。2请参见相关的SLF4J FAQ条目。

vwhgwdsa

vwhgwdsa5#

正如@sparkyspider answer所述,您可以简单地将 * slf 4j-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")
}
b5lpy0ml

b5lpy0ml6#

搜索以下字符串:level="DEBUG"使用您的IDE。您将在**.xml**文件中找到该文本。
使用level="INFO"代替level="DEBUG"
键值不区分大小写。
可以有如下内容:

<root level="info">
    ...
</root>

相关问题