log4j 日志级别_Spring Boot学习03_日志使用原理

一、Spring Boot的默认日志

市面上的日志框架;

JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....

如果仅仅只有一个日志框架的话,中途要换日志框架,我们就得修改代码,维护修改非常麻烦,所以就像JDBC---数据库驱动,使用一个统一接口层,再对其接口进行实现,这样的话我们用的时候只需要使用接口层中的API,要用哪种的日志框架,直接换对应的实现jar就可以了。

日志门面(日志接口层)

JCL(Jakarta Commons Logging) :2014年就没更新了,舍弃。

jboss-logging :只有一些特定的框架在用,一般用不着,舍弃。

SLF4j(Simple Logging Facade for Java):选用SLF4j

日志实现

Log4j :有性能问题,舍弃。

Logback:与log4j,slf4j出自同一人之手,为了解决Log4j的问题,重新写了一个框架可以使

用这个

JUL(java.util.logging) :Java防止日志市场全部被Log4j抢占,勉强出个这个抵抗下,舍弃

Log4j2:与Log4j没有任何关系,只是借它之名,很好的一个日志框架,但是很多框架没有适

配起来,舍弃。

所以最后我们选用的组合是SLF4j + Logback。Spring Boot使用的也是该组合

SLF4j的使用:这里引用官网的一张图

最下面第一个就是抽象层;第二个就是日志实现,第三个是适配层,第四个还是实现。

因为log4j与JUL出现的时候太早了,那时候还没有SLF4j,所以要写一个适配层的jar包,上面实现SLF4j,使用下面jar包的API,起到承上启下的作用。

5eb0968cea562821ce81773b020c42dd.png

二、遗留的问题

在我们使用框架开发的时候,它们使用的框架都是不同的,SLF4j也给出了对应的解决方案

544684e01c9818e41095280a39f969df.png

我们就拿第一个来解释:

我们的项目接口层用的是SLF4J,想让项目中所有的日志输出都使用logback,但是别的框架使用的日志框架有commons logging,log4j,java util logging,如果把它们删了的话,框架运行就会报错(比如Spring框架使用的日志框架就是commons logging),SLF4J使用了与之对应的狸猫换太子包,拿第一个来说jcl-over-slf4j.jar来说,这个jar包内部中的包名和类名与commons logging众的包名类名都是一样的,但是其实现却是使用SLF4J的API,这样的话,我们到时候使用就可以把commons logging.jar给排除,然后引入jcl-over-slf4j.jar,就可以实现所有的日志输出就是logback

总结

如何让系统中所有的日志都统一到slf4j;

1、将系统中其他日志框架先排除出去;

2、用中间包来替换原有的日志框架;

3、我们导入slf4j其他的实现;

三、Spring Boot中的日志

1、Spring Boot使用它来做日志功能

<dependency>
   

底层依赖关系(Spring boot 2.1.2使用了log4j-to-slf4j替换了之前的log4j-over-slf4j)

Spring Boot底层也是使用SLF4J + logback做日志

使用中间包(狸猫换太子包)把其他的日志换成了SLF4J

44dbc0c42faaef4e1fdc088694f15f08.png

2、日志使用

2.1、说明Spring Boot的默认日志级别是info

2c91ee642fb34b6eb8fa8f03f0f4e199.png

2.2、可以通过全部配置文件修改日志级别,输入的格式,默认没有日志文件输出,也可以

在全局配置文件中指定输出文件目录或者路径

下面测试了日志文件的输出位置,控制台打印日志的格式,文件中的日志格式,日

志级别

ff132a9079a6e04045ede5b6772b9963.png

aa0e4d3e17b1c6316e742bd0d04370e5.png

2.3、默认配置在spring-boot-2.1.2.RELEASE.jar这个包下

86a60b658938af719d0de28434ab3619.png

在这里指定了默认的日志文件在哪和日志级别的确是info

8af94a932d7fc69e1393362ea58961df.png

2.4、在classpath路径加入logback.xml,SpringBoot就不使用它的默认配置了,这样命

命名会跳过Spring Boot的检测,Spring Boot推荐logback-spring.xml命名方式,

这样可以在里面加<springProfile name="环境名称"></springProfile>标签,这

样就可以根据不同的环境来切换不同的配置了。

此时不是dev的环境所以是下面的格式

8472d7e2d815656f1771cfa8f9a8cbd4.png

在命令行启动的时候指定环境dev,就是上面这种格式了

f2d76acc17eb7eb90172e3b89ee86df8.png

f9fb62abe0fa8fe0e3fb405a41aa7fd0.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值