Java日志框架和Springboot日志框架

 

目录

1.日志门面和日志实现

2.SpringBoot默认日志框架

3.形形色色的日志框架SpringBoot如何整合的

4.更换SpringBoot默认的日志框架

5.注意事项


1.日志门面和日志实现

 

JCL是commons-logging包下的

JUL是jdk自带,在java.util.logging包下 

Log4j是Apache下的一款开源的日志框架

扫描二维码关注公众号,回复: 11674943 查看本文章

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好

Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计

Log4j2主要有以下特色

性能提升:Log4j 2包含基于LMAX Disruptor库的下一代异步记录器。在多线程方案中,与Log4j 1.x和Logback相比,异步Logger的吞吐量高18倍,延迟降低了几个数量级

自动重载配置:与Logback一样,Log4j 2可以在修改后自动重新加载其配置。与Logback不同,它在进行重新配置时不会丢失日志事件

无垃圾机制:在稳态日志记录期间,Log4j 2 在独立应用程序中是无垃圾的,而在Web应用程序中是低垃圾的。这样可以减少垃圾收集器上的压力,并可以提供更好的响应时间性能

2.SpringBoot默认日志框架

由下图可知SpringBoot默认使用Slf4j+Logback的方式;

3.形形色色的日志框架SpringBoot如何整合的

下面我们来想一个问题:假如其他框架不是使用的Slf4j门面,那么是SpringBoot是如何统一使用Slf4j进行输出的呢?

下面我们来看Slf4j官方的一张历史遗留问题的图片,网址为http://www.slf4j.org/legacy.html

可以明显看出,我们可以使用替换包对框架自带的日志门面进行替换,替换的原则清继续往下看

替换的原则

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

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

3、导入slf4j其他的实现

4.更换SpringBoot默认的日志框架

比如将SpringBoot的日志实现切换为log4j2

<dependency>    
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>    
    <exclusions>           
        <exclusion>            
           <artifactId>spring-boot-starter-logging</artifactId>            							    
           <groupId>org.springframework.boot</groupId>        
        </exclusion>   
    </exclusions> 
</dependency>

<dependency>    
    <groupId>org.springframework.boot</groupId>    
    <artifactId>spring-boot-starter-log4j2</artifactId> 
</dependency>

5.注意事项

阿里巴巴编码规范中建议使用Slf4j的api

后续还会继续补充日志配置文件等相关知识,请持续关注,感觉观看~

猜你喜欢

转载自blog.csdn.net/weixin_40791454/article/details/107040200