spring5.和spring4.日志技术实现
新建一个项目,引入spring5的pom依赖。
1 | <dependency> |
可以看到spring5默认使用了jcl包,测试代码:
1 | public static void main(String[] args){ |
运行后得到日志信息:
1 | 三月 04, 2019 8:55:15 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh |
引入log4j的包,再运行,日志发现没任何变化。
如果把spring5改为spring4,进行相同的测试,运行后的日志有变化。
通过查看文档得知:spring5使用的spring的jcl(spring改了jcl的代码)来记录日志的,但是jcl不能直接记录日志,采用switch循环优先的原则。
spring4当中依赖的是原生的jcl(原生的jcl就是如果有log4j就会优先使用)。
spring jcl分析:
1 | public AbstractApplicationContext() { |
获取分析:
1 | //定义 |
此时,如果引入log4j2的包,日志会走log4j2。
总结:
1 | spring5使用的spring的jcl(spring改了jcl的代码)来记录日志的,但是jcl不能直接记录日志,采用switch循环优先的原则。 |