08_Spring5.0新特性之日志框架

一 日志框架场景:

某项目开发人员二蛋,为了了解项目运行情况,在我们代码中加入了, System.out.println("…")来记录 日志,
有一天,项目经理觉得通过这种,System.out.println("…")的方式很搂,要他把把代码中的,System.out.println
给去掉,但是过了几天之后,项目出问题了,查询很棘手又没有日志,然后经理又要求他把 System.out.println加上,然后又去掉又加上…
情况一:
二蛋是一个脾气暴躁的人, 拿起板砖就跟经理干起来,然后牢底坐穿,全剧终 没用案例场景,下课。
情况二:
二蛋为了解决System.out.println("…")比较搂的情况,然后就写了一个记录日志的jar包名称叫 angle-logging.jar用来替代 System.out.println("…")
二蛋是一个爱专研的人,想出了一写比较牛逼的点子,比如日志异步记录, 日志归档。然后起名叫angle-logging-good.jar,
然后把项目中原来的angle-logging.jar中的卸下来,然后安装新的框架angle-logging-good.jar,但是 由于二种方式实现的接口可能不一样, 需要修改代码中的
日志打印类。 这种情况 这么办?
此时二蛋,想到了一个好的点子,我把angle-logging.jar 和angle-logging-good.jar的功能都抽取出来形 成一个门面angle-logging-intf.jar(也就是我们的接口) 然后在二个日志框架中实现不同的功能.这样,我的业务代码中直接使用的是我们的angle-logging-intf.jar的方法,然后根据需要导入了angle-logging.jar或者angle-logging-good.jar

二 我们Java中常用的日志框架是什么

2.1 我们常常听说的就是如下的日子框架,还不知道这么选?

①:JUL(java.util.logging) ,
②:JCL(Jakarta Commons-Logging) 由apache公司Jakarta 小组开发的,
③:JBoss-logging
④:logback
⑤:log4j
⑥:log4j2
⑦:slf4j(Simple Logging Facade for Java)
在这里插入图片描述

我们Spring底层选择的是我们的这个JCL做为日志门面的
SpringBoot 选择的是 SLF4J做为我们的日志门面(当时log4j,和logback)他选择了logback

在这里插入图片描述

2.2 加入我们系统使用的是SLF4J作为日志门面,我们是如何匹配

①:app(我们的应用系统)+日志门面(Slf4j slf4j-api.jar)+不加我们的日志实现 不会记录日志
②:app(我们的应用系统)+日志门面(Slf4j slf4j-api.jar)+logback(logback-classic.jar,logback-core.jar)
③:app(我们的应用系统)+日志门面(Slf4j slf4j-api.jar)+适配器(因为早期log4j 压根不知道有一slf4j的日志门面,所以降入适配器slf4j-log412.jar实现我们slf4j的接口,真正实现功能调用我们的log4j.jar)+log4j.jar
④:app(我们的应用系统)+日志门面(Slf4j slf4j-api.jar)+适配器(因为早期juc 压根不知道有一slf4j的日志门面,所以降入适配器slf4j-jdk14.jar实现我们slf4j的接口,真正实现功能调用我们的juc的jar包的功能)+juc.jar
⑤:app(我们的应用系统)+日志门面(Slf4j slf4j-api.jar)+slf4j(slf4j-simple.jar)

第一种情况(我们业务系统直接使用的是spring底层用的日志框架jcl+jdk的日志实现)

<dependency> 
    <groupId>org.springframework</groupId>  
    <artifactId>spring-context</artifactId>  
    <version>4.3.20.RELEASE</version> 
</dependency>
public class MainClass {
   
    private static Logger logger = Logger.getLogger(MainClass.class.getName());
    public static void main(String[] args) {
   
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
        logger.info("hello tuling");
        ctx.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lastinglate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值