SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (N

转自:https://www.cnblogs.com/neillee/p/6828646.html

SLF4J日志系统在项目导入时频现的问题

一、概述

近期在导入一个已有的项目时,日志系统出现了一个问题。错误信息如下:

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: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
Eclipse - Failed to load class “org.slf4j.impl.StaticLoggerBinder” [duplicate]
SLF4J user manual

问题背景进一步描述如下:

1.1 项目的日志系统依赖

项目中,所有与日志系统相关的依赖如下:

错误信息提示的是 “无法加载 "org.slf4j.impl.StaticLoggerBinder"类 ”,在上图中无法找到该类的存在,因而确实是由于没有依赖造成的错误。

1.2 org.slf4j.impl.StaticLoggerBinder 类

从 maven 下载与项目中依赖版本相同的 slf4j 包,包结构如下:

通过资料查询知道,slf4j-nop-1.7.9.jarslf4j-simple-1.7.9.jar 两个 JAR 包中有org.slf4j.impl.StaticLoggerBinder 类。

二、解决方案

2.1 导入 slf4j-nop-x.x.x.jar

导入 slf4j-nop-x.x.x.jar 包,注意版本号要对应。

实际使用发现,导入该包后,之前的错误信息不会显示,log 日志内容也不显示。

仅仅只是不报错而已!!!问题并没有得到解决!

2.2 导入 slf4j-simple-1.7.9.jar

导入 slf4j-simple-x.x.x.jar 包,注意版本号要对应。

实际使用发现,导入该包后,日志能正常显示!!!


### HBase SLF4J Failed to load class org.slf4j.impl.StaticLoggerBinder 解决方案 在运行HBase,如果出现 `SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"` 错误,这表明系统未能找到合适的日志实现绑定器。以下是详细的解决方案: #### 问题描述 当启动HBase,可能会遇到以下错误信息: ``` 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)的日志实现[^1]。 #### 原因分析 SLF4J是一个抽象层,用于统一不同日志框架的接口。为了使SLF4J正常工作,必须提供一个具体的日志实现绑定器(如 `slf4j-nop.jar`, `slf4j-simple.jar`, `slf4j-log4j12.jar`, 或 `logback-classic.jar`)。如果没有绑定任何日志实现,SLF4J将无法正常记录日志并切换到NOP模式[^4]。 #### 解决方法 以下是解决该问题的具体步骤: 1. **检查当前依赖库** 首先需要确认HBase安装目录下的 `lib` 文件夹中是否已经存在与SLF4J相关的jar包。可以执行以下命令查看: ```bash cd /path/to/hbase/lib ls | grep slf4j ``` 如果未发现任何具体的日志实现绑定器,则需要手动添加[^3]。 2. **下载合适的日志实现绑定器** 根据实际需求选择一个日志实现绑定器进行下载。以下是几种常见的选择: - **slf4j-nop.jar**: 提供无操作的日志实现,适合不需要记录日志的场景。 - **slf4j-simple.jar**: 提供简单的日志实现,适合小型应用。 - **slf4j-log4j12.jar**: 结合Log4j 1.2使用,适合已有Log4j配置的环境。 - **logback-classic.jar**: 使用Logback作为日志实现,功能更强大且推荐使用[^4]。 下载地址:[Maven Central Repository](https://search.maven.org/)。例如,下载 `slf4j-nop-1.7.36.jar`: ```bash wget https://repo1.maven.org/maven2/org/slf4j/slf4j-nop/1.7.36/slf4j-nop-1.7.36.jar ``` 3. **将绑定器添加到HBase的lib目录** 将下载的jar文件复制到HBase的 `lib` 目录下: ```bash cp slf4j-nop-1.7.36.jar /path/to/hbase/lib/ ``` 4. **重启HBase服务** 完成上述步骤后,重新启动HBase服务以验证问题是否解决: ```bash /path/to/hbase/bin/start-hbase.sh ``` #### 示例代码 以下是一个简单的日志配置示例,假设选择了 `slf4j-log4j12.jar`: ```properties # log4j.properties log4j.rootLogger=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender 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 ``` 将上述内容保存为 `log4j.properties` 并放置在HBase的配置目录下。 --- ### 注意事项 - 确保仅添加一个日志实现绑定器,避免多个绑定器冲突导致其他问题[^3]。 - 如果使用的是Logback作为日志实现,请确保同包含 `logback-classic.jar` 和其依赖的 `logback-core.jar`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值