共计 889 个字符,预计需要花费 3 分钟才能阅读完成。
1. 日志框架
Java 的日志框架分为日志门面和日志实现,这样的好处是为了解耦,配置更灵活,且通过日志门面可以以一种统一的方式输出日志。
常见的日志框架有以下几种:
日志门面 | 日志实现 |
---|---|
JCL SLF4j jboss-logging | log4j jul log4j2 logback |
日志门面有三种:
-
JCL:
Jakarta Commons Logging
,是 apache 的 Jakarta 小组开发的日志门面,但是已经很久没有更新了。 -
SLF4j: 全称
Simple Logging Facade for Java
,和日志实现 log4j、logback 是同一作者。 -
jboss-logging:是专门为 jboss 开发的。
日志实现有四种:
-
Log4j: Log4j 是一个广泛使用的 Java 日志框架,提供了丰富的配置选项和灵活的日志记录功能。它支持多种输出目标(如控制台、文件、数据库等),可以根据日志级别过滤日志消息,并具有可插入的日志记录器。
-
JUL: 全称
Java Util Logging
,可以通过配置文件或编程方式进行配置。尽管功能相对较简单,但仍然被广泛使用。 -
Log4j2: Log4j2 是 Log4j 的升级版本,由 apache 开发。
-
Logback: Logback 是由 Log4j 作者创造的一个高性能日志框架,旨在成为 Log4j 的继任者。它支持 SLF4J 接口,并提供了许多先进的日志功能,如异步日志记录、按时间和大小滚动的日志文件等。
2. slf4j的使用
需要注意的是在早期版本中,Spring 使用的是 Jakarta Commons Logging
(JCL) 作为默认的日志门面,但是没有绑定具体的日志实现。在 Spring 5.x 版本中,改为了使用 SLF4J。并且对于 SpringMVC 和 SpringBoot,它们也会继承 Spring 的默认日志框架。
以 SLF4J 为例,整合其它日志实现,大致情况如下图:
可以看见 SLF4J 配合 log4j 和 jul 时,需要导入相应的适配层 jar 包。
但是当引入的框架比较多时,可能很多框架的日志门面都不相同,此时需要先将原来的 jar 包排除掉。然后引入 slf4j 的覆盖包,其实还是调用的 SLF4J 接口,然后再调用具体的实现
提醒:本文发布于426天前,文中所关联的信息可能已发生改变,请知悉!