Springboot日志-简单总结
三、Springboot日志-简单总结
1、日志框架
小张;开发一个大型系统;
1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?
2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar;
3、高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar?
4、将以前框架卸下来?换上新的框架,重新修改之前相关的API;zhanglogging-prefect.jar;
5、JDBC—数据库驱动; 写了一个统一的接口层;日志门面(日志的一个抽象层);logging-abstract.jar;
给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层;
市面上的日志框架:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
日志门面 | 日志实现 |
---|---|
|
Log4j 、JUL(java.util.logging) Log4j2 、Logback |
左边选一个门面(其实就是抽象层)、右边来选一个实现;
日志门面: SLF4J;
日志实现:Logback;
SpringBoot:
底层是Spring框架,Spring框架默认是用JCL;SpringBoot选用 SLF4j和logback
;
日志的选择
- 日志门面上 jboss-loggin,是因为其应用环境过于特殊
- JCL门面最后依次更新为2014年,社区不在活跃
- Logback是log4j的升级版,而且其作者也是写出了SLF4J的作者
- JUL是java核心工具包,在log4j之后出现,功能不强大
- Log4j2,是Apache开发的日志,功能强大,只是用了log4j的名字,但是市场占用低下
2.(SLF4j)日志门面和具体日志实现的层次关系
图示
所有日志应该去使用slf4j提供的日志层次,用抽象进行调用
遗留问题:
不同框架内置了不同的日志框架,怎么统一替换为统一的日志包
继续导入对应的jar包做适配
1、将系统中其他日志框架先排除出去;
2、用中间包来替换原有的日志框架;
3、我们导入slf4j其他的实现;
3.springboot与日志使用(上述理论的实现)
springboot-logging启动类
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
项目依赖的图
springboot-loggin实现不同日志转换的代理
总结:
-
SpringBoot底层也是使用slf4j+logback的方式进行日志记录
-
SpringBoot也把其他的日志都替换成了slf4j;
-
中间替换包
-
如果我们要引入其他框架,是一定要把这个框架的默认日志依赖移除掉
SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要 把这个框架依赖的日志框架排除掉即可;
<!-- spring-loggin进行替换 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring‐core</artifactId> <exclusions> <exclusion> <groupId>commons‐logging</groupId> <artifactId>commons‐logging</artifactId> </exclusion> </exclusions> </dependency>
4.Springboot使用日志
-
代码
logger.trance("")
**.debug("")
**.info("")
**.warn("")
**.error("")
这个也是日志的级别顺序,越靠下,级别越大。
通过日志打印级别来控制需要打印的日志程度
-
配置
请看上面的标题的官方文档链接,会比较详细