SpringBoot--⽇志框架的学习版本:
Spring Boot 2.1.5.RELEASE
maven 3.2.5
jdk1.8
(想⾃学习编程的⼩伙伴请搜索,更多⾏业相关资讯更有⾏业相关免费视频教程。完全免费哦!)1.我选⽤的⽇志框架:
⽇志门⾯(抽象层): SLF4J
⽇志实现: Logback
Spring Boot: 底层是Spring框架,Spring框架默认是JCL;
⽽Spring Boot选⽤ SLF4j和Logback
2. SLF4j使⽤
1) 如何在系统中使⽤SLF4j
开发的时候,⽇志记录⽅法的调⽤,不⽤改直接调⽤⽇志的实现类,⽽是调⽤⽇志抽象层⾥的⽅法;
导⼊slf4j的jar和 logback的实现jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = Logger(HelloWorld.class);
logger.info("Hello World");
}
}
SLF4j与其他⽇志框架结合⽰意图:
2) 遗留问题
虽然我使⽤的是(slf4j & logback),但是其他的⽐如Spring框架⽤的commons-logging⽇志框架, Hibernate⽤的是jboss-logging⽇志框架,等等,太乱了了,所以我们要 统⼀⽇志记录,即使别的框架也要和我⼀起统⼀使⽤slf4j进⾏输出;
官⽅给出的⽰意图:
逻辑:
1.将系统其他的⽇志框架排除;
2.⽤中间包来替换原有的⽇志框架(红⾊框起来的就是中间包);
3.导⼊slf4j其他的实现
3. Spring Boot⽇志关系
其实是这个依赖的这个包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.5.RELEASE</version>
<scope>compile</scope>
</dependency>
在 pom⽂件下⿏标右键点击:
SpringBoot所有依赖关系图,我们只看logging相关的:
我⽤的是2.1.5版本的Spring Boot, 笔者在学习过程中发现我看的⽼师视频⾥跟我的版本不⼀样,
这是那位⽼师的版本:
很明显跟我不⼀样,不过Spring肯定对⾃⼰的底层进⾏了升级;
确切的说不是升级,⽽是剔除掉了jcl框架的转换,因为jcl框架最后更新⽇期是2014年,明显已经过时
但是基本推理的出来,slf4j的官⽹图确实是对SpringBoot1.x版本的⽰意,但是对我的2.x版本不符, 不过根据我的包名来看,他们的功能是差不多的,都是转成slf4j;
⼩总结:
1.SpringBoot底层也是 slf4j+logback的⽅式j进⾏⽇志记录;
2.SpringBoot也把其他⽇志都替换成了slf4j;
3.中间替换包;
中间替换包图⽰:
4) 如果我们要引⼊其他的框架,⼀定要把这个框架默认⽇志依赖移除掉!
Spring框架默认的⽇志框架是: commons-logging;
但是Spring Boot引⼊spring核⼼jar包的时候去除了 ⽇志jar包;
Spring Boot能⾃动适配所有的⽇志,⽽且底层使⽤ slf4j+logback的⽅式记录⽇志,引⼊其他框架的时候,只需要把这个框架依赖的⽇志排除掉
4. ⽇志使⽤
测试类:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.st.context.SpringBootTest;
import st.context.junit4.SpringRunner;
springboot框架的作用@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootLoggingApplicationTests {
// ⽇志记录器记录器
Logger logger = Logger(getClass());
@Test
public void contextLoads() {
// ⽇志的级别
// 由低到⾼ trace < debug < info < warn < error
logger.debug("这是debug调试⽇志..");
logger.info("这是info⽇志..");
logger.warn("这是warn⽇志...");
<("这是error错误⽇志");
}
}
运⾏输出结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。