为什么 slf4j 被推荐使用

参考文章:
Simplifying the distinction between SL4J and commons logging

日志那点事儿——slf4j源码剖析
slf4j门面模式实现原理

SLF4J 与 CommonsLogging 原理对比

在这里插入图片描述

SLF4J 工作原理

如上图示意

  • slf4j 会在 classpath 中进行扫描, 寻找可用于 slf4j 绑定的日志实现类库
    • 如果只找到一个可用于绑定的日志类库, 就会正常进行绑定, 在运行过程中, 将所有面向 slf4j 的调用翻译为对应的日志实现类库调用
    • 如果存在多个可用于绑定日志类库, 就会提示报错

Commons Logging工作原理

如上图示意

  • Commons Logging 有一个神奇的逻辑层, 会首先去尝试在 commons-logging.properties 配置文件中查找是否已经设置了 org.apache.commons.logging.log property 这一属性 或者在应用内存中查找是否已经通过 Commons Logging API 设置过这一属性。
    • 如果找到, 则用 Commons Logging 的日志实现类
    • 如果没找到, 在 classPath 中查找是否有 log4j 实现, 有则使用
    • 如果还没找到, 直接尝试用 JDK1.4 以上的内置日志实现
    • 如果JDK 低于1.4, 则 使用 CommonsLog 中的SimpleLog 实现

优劣对比

SLF4J 的优点在于其策略足够简单, 在拥有maven, gradle 等此类依赖管理工具时, 我们可以很方便的确定, 最终日志的实现

Common Logging 的优点在于当类路径中存在多个日志实现库(jar)时 , 它有一个确定的规则最终选出一个实现类, 而不会因为多个实现类库的共同存在而报错无法完成绑定

由于目前maven, gradle 等构件工具完全可以高效清晰地帮助我们管理项目的依赖, SLF4J 在绑定策略的简单性上,给我们减少了很多出错的可能, 以及查错的成本, 综合来看, SLF4J 因其机制简单清晰的特点更容易被广泛使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]: 加了@slf4j注解后可以直接使用log是因为@slf4j注解会自动为类生成一个Logger对象,这个Logger对象可以直接用于日志记录。所以不需要再手动定义Logger对象了。\[1\]引用\[2\]: @slf4j注解的作用是简化日志记录的代码,使得开发者不需要手动定义Logger对象。这样可以减少代码的冗余,提高开发效率。\[2\]引用\[3\]: @Slf4j注解是使用slf4j日志框架的一种简化方式。在使用了@Slf4j注解后,可以直接使用log.info()等日志方法进行日志记录,而不需要再手动定义Logger对象。这样可以简化代码,提高开发效率。\[3\]所以,@Slf4j中的log方法不能使用是因为没有使用@slf4j注解,没有自动生成Logger对象。 #### 引用[.reference_title] - *1* *2* [为什么加了@slf4j注解 就可以直接使用log了呢?](https://blog.csdn.net/GBS20200720/article/details/122818549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [IDEA解决@Slf4j中log报红](https://blog.csdn.net/weixin_43707759/article/details/118215226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值