SLF4J 使用详细

SLF4J 使用详细

1. 问题场景
场景:在项目中引用一个第三方依赖时,启动应用程序报多日志桥接器错误,经问题排查发现第三方依赖包含非SLF4J桥接器(本项目中使用SLF4J日志门面框架)。
解决:将JCL的调整至SLF4J,具体明细见官网。
官网:
“http://www.slf4j.org/manual.html#swapping” “http://www.slf4j.org/legacy.html”

2. SLF4J流程调用
2.1 SLF4J与日志实现框架调用
在这里插入图片描述

简单调用图
在这里插入图片描述
2.2 简单描述
应用程序通过调用SLF4J API 实现对具体日志框架的使用,中间经过桥接器进行适配不同的日志实现(log4j、jul、logback、nop等)。
其中logback与SLF4J是同组织实现,可直接SLF4J调用而不需要桥接器。
2.3 从JCL迁移至SLF4J
在这里插入图片描述
如上图所示,可根据实际情况调整依赖包(log4j-over-slf4j.jar),做到直接迁移使用SLF4J日志门面接口。
2.4 通过SLF4J 调用JCL
两者属于同层级,仅为解决项目中必须使用JCL框架时,可通过引用依赖包,通过SLF4J对JCL的直接调用
“http://www.slf4j.org/legacy.html”
3.日志使用
3.1 日志中的占位符使用

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);

3.2 典型使用

public class TestController {

    private static final Logger logger = LoggerFactory.getLogger(TestController.class);
    private Integer t;
    private Integer oldT;

    public void setTemperature(Integer temperature) {
        oldT = t;
        t = temperature;
        logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
        if (temperature > 50) {
            logger.info("Temperature has risen above 50 degrees {}.", t);
        }
    }

    public static void main(String[] args) {
        logger.info("hello word!");
        TestController testController = new TestController();
        testController.setTemperature(500);

    }

}

PS:本文未详细叙述底层实现原理,仅仅阅读SLF4J获取Logger源码,具体日志实现框架源码未涉猎,仅作为个人对SLF4J使用流程记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值