日志框架介绍
日志框架有很多种,根据功能类型可以划分为两类,日志门面和日志实现。
-
日志门面:日志抽象层,只提供日志调用的标准,不提供日志的具体实现,使用者面向日志抽象层编码,实现层切换无感知。
日志门面 描述 jcl(commons-logging) Apache提供的commons-logging包,两个基本的抽象类:Log(基本记录器)和LogFactory(负责创建Log实例),2014停止更新,已很少使用 jboss-logging 使用场景少,特定框架使用,如:hibernate slf4j Simple Logging Facade for Java,简单的日志门面,与log4j、loback同一作者 -
日志实现:日志实现层,实现日志门面提供的标准,具体执行日志操作
日志实现 描述 log4j Apache提供的开源日志框架,后因性能问题已基本不用 logback 因log4j性能差而创作,与log4j、slf4j同一作者 log4j2 Apache重做的日志框架,与log4j无关,许多框架还未适配,没有广泛使用 jul(java.util.logging) jdk自带的日志工具,基本不用
日志框架选择
spring
版本 | 日志框架 |
---|---|
4.X | jcl+log4j |
5.X | slf4j+log4j2,为了兼容jcl,提供了spring-jcl适配 |
4.X
- spring-core
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
5.X
- spring-core
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
<version>5.0.10.RELEASE</version>
<scope>compile</scope>
</dependency>
- spring-jcl
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
springboot
springboot版本 | spring版本 | 日志框架 |
---|---|---|
1.X | 4.X | slf4j+logback,排除spring的jcl,通过jcl-over-slf4j兼容适配jcl |
2.X | 5.X | slf4j+logback,通过spring-jcl兼容适配jcl |
1.X
- spring-boot-starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
- spring-boot-starter-logging
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>