欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”

2025/9/22 10:31:59 来源:https://blog.csdn.net/weixin_55629186/article/details/143496093  浏览:    关键词:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”

SLF4J常见问题

      • 1、SLF4J简介
      • 2、SLF4J实现原理
      • 3、SLF4J常见问题





1、SLF4J简介


SLF4J(Simple Logging Facade for Java)是一个为Java程序提供日志输出的统一接口,并不具备具体的日志实现方案,类似JDBC,SLF4J只做两件事:提供日志接口、提供获取具体日志对象的方法

SLF4J只是一个日志标准,并不是日志系统的具体实现。SLF4J允许我们选择合适的日志框架(如Log4j、Logback等)实现日志输出功能

SLF4J-Simple、Logback等都是SLF4J的具体实现,Log4j并不直接实现SLF4J,而是由一层专门的桥接SLF4J-Log4j12来实现

2、SLF4J实现原理


导入依赖:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.15</version>
</dependency>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

基本使用:

package com.cc;
import org.apache.log4j.Logger;public class Test01 {private static final Logger logger = Logger.getLogger(Test01.class);public static void main(String[] args) {logger.info("This is a test.");}}

SLF4J的具体实现是通过LoggerFactory的getLogger()方法获取的。该方法会通过org/slf4j/impl/StaticLoggerBinder.class获取所有SLF4J的实现。在具体的日志实现jar包路径下,一定是有org/slf4j/impl/StaticLoggerBinder.class的存在

在这里插入图片描述

在这里插入图片描述
如果我们同时引入了多个SLF4J的实现,编译器会选择其中一个StaticLoggerBinder进行绑定,此时Console会显示警告

3、SLF4J常见问题


3.1、StaticLoggerBinder问题

在实际使用中,通常会遇到org.slf4j.impl.StaticLoggerBinder相关的错误,该错误意味着SLF4J无法找到其需要的绑定来执行日志操作,这通常是由于缺少相应的日志实现或类路径配置不正确导致的

SLF4J在启动时会尝试加载一个名为org.slf4j.impl.StaticLoggerBinder的类,这是SLF4J与具体日志实现之间交互的关键,如果找不到这个类,就会抛出如下错误:

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.

根据官网描述:

在这里插入图片描述
只需要将slf4j-nop.jarslf4j-simple.jarslf4j-log4j12.jarslf4j-jdk14.jarlogback-classic.jar中的一个(且只能一个)添加到类路径即可

例如,对于Log4j,添加如下依赖:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.25</version>
</dependency>

3.2、日志配置问题

添加日志实现后,还需要根据日志实现的特性进行日志配置。例如,对于Log4j,需要创建log4j.propertieslog4j.xml配置文件并编辑必要属性,否则可能报错:

在这里插入图片描述
resources下新建log4j.properties日志配置文件:

### 配置根 ###
# 控制将指定级别(INFO)的日志输出到哪些目的地(CONSOLE,fileAppender,dailyRollingFile,ROLLING_FILE)
#log4j.rootLogger=INFO,CONSOLE,fileAppender,dailyRollingFile,ROLLING_FILE
log4j.rootCategory=INFO,console### 配置输出到控制台 ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} [%-5p] %c{1}:%L: %m%n### 配置输出到文件 ###
# 输出DEBUG级别以上的日志到logs/error.log
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.File=logs/error.log
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.Threshold=DEBUG
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### 配置输出到文件,并且每天都创建一个文件 ###
# 输出DEBUG级别以上的日志到logs/error.log
log4j.appender.dailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyRollingFile.File=logs/error.log
log4j.appender.dailyRollingFile.Append=true
log4j.appender.dailyRollingFile.Threshold=DEBUG
log4j.appender.dailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyRollingFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### 配置输出到文件,且到达指定大小的时候产生一个新的文件 ###
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

综上所述,解决SLF4J相关问题通常包括以下几个步骤:

  • 检查依赖冲突:确保项目中没有多个SLF4J的实现库,例如同时包含Log4j和Logback,这种情况下,需要清理并排除冲突依赖

  • 添加日志实现:如果项目中只包含SLF4J的API,而没有具体的日志实现,则需要添加一个,例如Log4j或Logback

  • 配置日志实现:添加日志实现后,还需要根据日志实现的特性进行日志配置。例如对于Log4j,则需要配置log4j.propertieslog4j.xml

通过上述步骤,我们便能确保日志功能正常工作



参考文章:
https://cloud.tencent.com/developer/article/2160396
https://www.modb.pro/db/130472

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词