发展历史
总结
标准接口 | 实现产品 |
---|---|
JCL | log4j、jul |
Slf4j | logback |
log4j-api(log4j2) | log4j-core(log4j2) |
发展
- System.out
最早最简单的打印方式,不可配置日志级别 - log4j
Log4j是apache开源项目,作者Ceki Gulcu,最早的日志框架 - jul(java util logging)
apache建议sun把log4j引入到jdk中,sun没有引入,但是仿照log4j,推出了jul - JCL(Jakarta Commons Logging)
apache针对jul,搞了一套日志标准jcl一统江湖,log4j和jul都相当于是jcl的日志产品 - Slf4j(simple Logging Facade for java)
JCL问题太多,ceki离开apache后,搞了一个新的日志接口,也能叫日志门面,Slf4j优于JCL
但是Slf4j仅仅是接口,于是ceki又推出各种桥接包,统一了log4j、jul,以及JCL - logback
ceki推出了Slf4j的直接实现的日志产品logback - log4j2
apache推出log4j2,严重怀疑参考了ceki的logback
log4j2也高了分离式设计,分化成log4j-api和log4j-core,log4j-api是日志接口,log4j-core是日志产品,并且也搞出来各种桥接包
spring boot用什么
- 由spring-boot-starter-logging.jar pom.xml可见,spring boot使用的是slf4j+logback的组合
- 而且引入了各种桥接包,如果替换成其他日志框架,也可以自动适配
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starters</artifactId>
<version>1.5.13.RELEASE</version>
</parent>
<artifactId>spring-boot-starter-logging</artifactId>
<name>Spring Boot Logging Starter</name>
<description>Starter for logging using Logback. Default logging starter</description>
<url>http://projects.spring.io/spring-boot/</url>
<organization>
<name>Pivotal Software, Inc.</name>
<url>http://www.spring.io</url>
</organization>
<properties>
<main.basedir>${basedir}/../..</main.basedir>
</properties>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
</project>
使用
logback
- 简单的配置可以配置在application.properties或application.yml中
- 通常使用logback.xml,logback自动会在classpath的根目录下搜索配置文件
- 自定义文件名,需要配置在spring boot的配置文件中
logging:
config: classpath:logback-spring.xml
log4j2
- 移除logback的依赖,添加log4j2的依赖
- 添加log4j2.xml配置文件(和application.properties平级)
参考
版权声明:本文所有权归作者! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
赞成、反驳、不解的小伙伴,欢迎一起交流!