欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 【Slf4j】项目中使用 slf4j 的好处

【Slf4j】项目中使用 slf4j 的好处

2025/7/7 18:32:44 来源:https://blog.csdn.net/chenghan_yang/article/details/140909233  浏览:    关键词:【Slf4j】项目中使用 slf4j 的好处

文章目录

    • 前言
    • 实验
    • 原理
    • 后记

前言

  • 背景
    项目依赖了三方包,三方包有日志打印的代码。需要将三方包的日志打出来。
  • 问题
    是怎么做到项目的日志格式和依赖中的日志格式保持一致的?
  • 结论
    查阅资料后,发现是 slf4j 帮忙做了桥接。这里做下记录。

实验

  • git 仓库

    • starter 使用 log4j,暴露给主项目依赖
    • 主项目使用 logback (slf4j 的api), 依赖上文的starter项目
  • 测试用例

@SpringBootTest(classes = App.class)
@RunWith(SpringRunner.class)
public class AppTest {/*** slf4j 的api获取logger, 默认的实现是 logback*/Logger logger = LoggerFactory.getLogger(AppTest.class);@Resourceprivate StarterService service;@Testpublic void testLog() {// 自己项目的日志logger.info("这是来自主项目的日志,使用slf4j的api进行日志打印");// 三方包的日志service.doSomething();}
}

在这里插入图片描述

原理

参考 slf4j 的官网,slf4j 在上例中起了两个作用
在这里插入图片描述

log4j-to-slf4j 提供了一组桥接器(bridge)实现,可以将Log4j 的日志事件转发到SLF4J,从而使得原本使用Log4j 的代码能够无缝地迁移到使用SLF4J。这个依赖是由 spring-boot-starrter-logging 传递依赖带进来的,所以主项目自动获得了该桥接器的能力。

在这里插入图片描述

在这里插入图片描述

后记

  • 项目尽量使用 slf4j 获取logger,让上层不依赖具体的日志实现,由使用方决定。特别适合 Spring Boot 的集成方式。当需要替换日志框架时不用改变应用层代码。
    /*** slf4j 的api获取logger, 默认的实现是 logback*/Logger logger = LoggerFactory.getLogger(AppTest.class);
  • Spring Boot 自带的 slf4j 桥接api帮我们解决了依赖的日志打印问题,来自于 spring-boot-starter-logging

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词