下面是 Maven Repository 上热门 Logging 框架的排行榜,SLF4J 的排名是第二名的2倍之多,足见 SLF4J 是一个非常优秀的框架。

在正式开始之前,我们需要清楚一个概念:SLF4J 并不是一个真正的 Logging 日志框架。

根据 SLF4J 官网的描述,SLF4J 作为各种日志框架的简单外观或抽象,允许最终用户在部署时插入所需的日志框架(java.util.logging、Logback 或者 Log4j)。
意思就是说,SLF4J 是一个对各种日志框架的封装的库,封装了所有 Logging 需要使用到的 api,SLF4J 在使用的时候只需要绑定要使用的日志框架(java.util.logging、Logback 或 Log4j)即可。
这样的封装,感觉多此一举,直接使用真正的日志框架不就好了?
真的是这样吗?假设有这样一个场景:
一个项目上线多年,因为业务关系,原来使用的日志框架已经无法满足新的业务场景,需要引入公司内部开发的性能强悍的日志框架,这个一个庞大的工作量,万一有地方没有改到,上线了,过了十天半个月才被触发,那就麻烦大了。
但是如果使用了 SLF4J 呢?那么这个工作就很轻松了,只需两步即可替换掉 SLF4J 绑定的日志框架。香不香?
下面开始 SLF4J 的使用:
我们先建一个 Maven 测试项目,先确认自己会使用后再集成到项目中。
选中 Maven,点击 Next —— 输入项目名称 —— Finish。
注:我这里使用的是 IntelliJ IDEA,其他开发工具也是大同小异,新建一个 Maven 项目即可。


建好 Maven 项目后,就要开始前面说的两步中的第一步:
1. 添加依赖
在 pom.xml 文件中添加依赖: SLF4J 和排名第二的 Logback。
注意:
- 如果你是在 Maven Repository 获取,请记得把
dependency节点中的<scope>test</scope>删掉。scope标签的作用:www.cnblogs.com/Jimc/p/9777…
<dependencies>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
把依赖添加到 pom.xml 中,点击 Maven 同步按钮,等待底部进度条走完后,pom.xml 中红色部分文字会变黑色,代表依赖添加成功。
注:红色表示本地 Maven 缓存没有该依赖库,需要从 Maven 服务器拉取。


添加依赖之后,SLF4J 就已经自动绑定好 Logback 了。
新建测试类 SLF4JTest :
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JTest {
private static final String TAG = "TAG";
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(TAG);
logger.trace("test_trace");
logger.debug("test_debug");
logger.info("test_info");
logger.warn("test_warn");
logger.error("test_error");
}
}
写好代码,右键点击 Run 'SLF4JTest.main()'。

我们发现没有打印出 trace 日志,这是因为 logback 默认的最低打印级别是:debug。
现在要进行第二步了:
2. 编写 logback 配置文件
在 resources 中新建 logback.xml 。
注:Logback 日志框架的配置文件名称为:logback.xml。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/test.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>


好了,我们看到 trace 级别的日志已经可以打印出来了,日志文件也已经生成了。
SLF4J 的使用就到这里结束了。
Logback 的配置文件还有一些高级的用法,可以看一下这两篇,难度适中:
Logback 配置详解 & 原理介绍:blog.csdn.net/u013332124/…
Logback 官方手册 - Chapter 4: Appenders:logback.qos.ch/manual/appe…