Java 如何从slf4j关闭日志记录

Java 如何从slf4j关闭日志记录,java,logging,jakarta-ee,slf4j,Java,Logging,Jakarta Ee,Slf4j,它是一个第三方应用程序,在我们的appserver上生成大量日志条目。像这样: [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.JCLLoggerAda

它是一个第三方应用程序,在我们的appserver上生成大量日志条目。像这样:

[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是各种日志框架的日志外观。该输出来自ApacheCommons Loggin框架适配器,它变成了另一个门面

您使用的是哪个日志后端,例如logback、log4j、j.u.l?您需要配置后端以过滤这些消息

此外,日志消息指向“
org.slf4j.impl.jcloggerAdapter
”这一事实表明调用方位置推断无法正常工作。(它应该提到实际的调用方,而不是
jcloggerAdapter
)。如果:

  • 您使用的是旧版本的SLF4J
  • 调用方正在使用类似slf4j的包装器,或者有自己的日志API,该API无法正确推断调用方的位置。另见一份相关报告

  • slf4j只是到实际日志后端的一个漏斗(这里覆盖jakarta commons logging),您必须对其进行配置以消除某种消息。对于logback,这是适当的配置片段:

        <!--  No Tomcat debug logs -->
        <configuration>
        ...
            <logger name="org.apache.catalina.core" level="OFF" />
        ...
        </configuration>
    
    
    ...
    ...
    
    对于log4j,它非常相似。

    或者,下载,在那里查找slf4j-nop-1.6.4.jar(这是无操作记录器),并将其包含在类路径中。当SLF4J类加载器看到这一点时(它会查看类路径中可以使用的记录器),它应该停止日志记录(一旦重新启动应用程序)


    至少通过这种方式,您不需要弄乱日志配置文件…

    使用您的IDE搜索以下字符串:
    level=“DEBUG”
    。 您将在.xml文件中找到该文本

    去那里用
    level=“INFO”
    代替
    level=“DEBUG”

    键值不区分大小写

    可能有以下情况:

    <root level="info">
        ...
    </root>
    
    
    ...
    
    这是第三方应用程序。我没有访问任何代码(反编译除外)没有log4j.properties文件或任何其他看起来不包含任何日志属性的文件在我的系统上,我还必须从我的类路径中删除slf4j-log4j*.jar。如果类路径中有多个slf4j后端,slf4j将非常不喜欢。我使用的是maven,我添加了Zorn先生建议的依赖项,我更改了其他slf4j依赖项,使它们都具有相同的版本,正如Thorbjørn Ravn Andersen建议的那样,但我仍然看到外部库中的日志。