解决SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

经常在项目启动的日志中可以看到下面的日志信息:

21-Aug-2017 17:55:52.744 ?? [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
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.

其中的Failed to load class “org.slf4j.impl.StaticLoggerBinder” Error很容易引起我们的注意,虽然这个问题即便不去修复,也不会影响正常使用。但是一般还是建议顺手修复了。

Failed to load class “org.slf4j.impl.StaticLoggerBinder” Error

在使用slf4j的时候,你需要提供3个组件

  • slf4j-api 这使您可以在代码中对slf4j的org.slf4j.Logger进行日志记录调用(而不是特定的日志记录实现,从而在代码中引入日志记录抽象)。
    对应代码中的:

    private final Logger logger = LoggerFactory.getLogger(getClass());
    

  • SLF4J Binding 这是slf4j-log4j12.jar(用于log4j日志记录),slf4j-jdk14.jar(用于Java日志记录),slf4j-jcl.jar(如果您使用Commons logging)或logback-classic.jar(用于logback记录) 。使用正确的绑定jar,SLF4J能够在slf4j-api和底层日志记录实现之间进行桥接。

  • 底层日志记录实现 -在这里,您提供了底层的日志记录库,它将为您的程序实际执行日志记录。 SLF4J会将记录调用委托给此库。

上面提到的Failed to load class “org.slf4j.impl.StaticLoggerBinder” Error其实就是因为缺失第二个组件导致的。

修复办法:

关于修复办法直接给出我经常使用的配置:

          <!--log-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <scope>test</scope>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <scope>test</scope>
                <version>${slf4j.version}</version>
            </dependency>
            <!--log-->
本文版权归作者所有,禁止一切形式的转载,复制等操作
赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注