java日志体系

 

如果是新代码建议是slf4j 因为可以通过适配器灵活适配各种日志实现 

 

如果同时项目中老代码使用了log4j, 可以通过桥接器,适配到slf4j,然后就跟新代码使用得日志框架一致了,但是注意log4j和slf4j不要互相适配和桥接,可能出现死循环导致栈溢出

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

<!-- log4j1 基础包 -->
<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
</dependency>

<!-- slf4j 适配 log4j1.2 -->
<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.32</version>
</dependency>


<!-- log4j4基础包 --> 
<dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.14.1</version>
 </dependency>
 <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.14.1</version>
 </dependency>

 <!-- slf4j 适配 log4j2 -->
 <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
       <version>2.14.1</version>
 </dependency>

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值