
如果是新代码建议是slf4j 因为可以通过适配器灵活适配各种日志实现
如果同时项目中老代码使用了log4j, 可以通过桥接器,适配到slf4j,然后就跟新代码使用得日志框架一致了,但是注意log4j和slf4j不要互相适配和桥接,可能出现死循环导致栈溢出
1.log4j , 2.jcl, 3jul
spring默认使用jcl 然后jcl使用jul, spring默认不适用jul, 是因为jul classloader原因无法适配log4j2,所以使用得jcl,tomcat使用得jul
如果sping想用log4j,因为无法修改spring底层实现 则需要通过 spring --> jcl--> jcl-over-slf4j --> slf4j--> log4j适配器(slf4j-log4j12)->log4j
log4j
log4j
1.2.17
org.slf4j
slf4j-log4j12
1.7.32
org.apache.logging.log4j
log4j-api
2.14.1
org.apache.logging.log4j
log4j-core
2.14.1
org.apache.logging.log4j
log4j-slf4j-impl
2.14.1
springboot默认使用logback实现, 有个spring-boot-starter-logging专门打印日志,
默认通过slf4j -->logback-classic适配器 -->logback-core打印日志
tomcat -->jul -->jul-to-slf4j桥接器 -->slf4j重复第一步
log4j -->log4j-to-slf4j桥接器 --》slf4j重复第一步(可能老代码直接使用得log4j)
也可以排除spring-boot-starter-loggin(log4j1)导入 spring-boot-starter-log4j2 直接使用log4j2
使用jcl按优先级jcl实现
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)