Slf4j与Log4j的区别

Slf4j与Log4j的区别前言在开发过程中使用日志库打印信息是必不可少 我之前在开发学习的过程中使用的多数是 Log4j 而现在大多数程序员使用的都是 Slf4j 于是就研究了一下两者的区别 一 区别介绍 Log4j 全称为 Logforjava Slf4j 全称是 simplelogfac 两者最本质的区别可以简单描述为 Log4j 可以看成是一个完整的日志库 可以通过 Log4j 的配置文件灵活配置日志的记录格式 记录级别 输出格式等 而不需要修改已有的日志记录代码 Slf4j 则是日志库的一个统

前言

在开发过程中使用日志库打印信息是必不可少,我之前在开发学习的过程中使用的多数是Log4j,而现在大多数程序员使用的都是Slf4j,于是就研究了一下两者的区别。

一、区别介绍

Log4j 全称为Log for java,Slf4j 全称是simple log facade for java。两者最本质的区别可以简单描述为:

Log4j 可以看成是一个完整的日志库,可以通过Log4j的配置文件灵活配置日志的记录格式、记录级别、输出格式等,而不需要修改已有的日志记录代码。

Slf4j 则是日志库的一个统一规范接口,说到接口,可能很多朋友就明白了为什么会选择Slf4j了。

那就说说使用Slf4j接口的好处:
1.解耦:
使用接口最大的作用就是解耦,当我们使用Log4j这个日志库处理日志信息时,就与其特定的类库发生了耦合,而日志库还有java.util.logging、logback等等,想象一下,若你的项目使用的是Log4j,当哪天你的项目需要引入别人编写的一个组件,而这个组件却是使用logback处理日志的,那我们就不得不导入两个实现同样功能的jar包并且维护两套日志配置了。
这时候就体现出Slf4j统一规范接口的价值了,因为Slf4j只是一个接口,我们只是通过调用slf4j接口的日志方法统一打印日志,可以忽略日志的具体实现方法,这样,即使我们的系统换了一个日志源,不需要我们去更改代码。这样我们就达到了降低日志和项目之间的耦合度的目的。






2.占位符
Slf4j打印日志的时候可以使用占位符” {} “,而Log4j这些传统的日志系统里面并没有占位符的概念,只能使用拼接字符串的方式,甚至往往需要创建没有用的String对象。

 private void log4jTest(){ 
    String msg = "something error happen..."; logger.info("错误信息为:" + msg); } 
 private void slf4jTest(){ 
    log.info("错误信息为:{}","something error happen..."); } 

二、使用Slf4j

现在的项目想使用Slf4j或者Log4j很简单,只需要安装Lombok插件,然后在需要使用日志的类上使用@Slf4j注解就可以了

1.安装lombok
File —> Settings —> Plugins 然后搜索Lombok即可找到
在这里插入图片描述
2.导入依赖






<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> 

注意此处optional填写true,代表这个包不需要打包发布,仅编译时需要用到

3.重启IDE

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213181.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:23
下一篇 2026年3月18日 下午6:23


相关推荐

  • vue-oidc-client集成IdentityServer4

    vue-oidc-client集成IdentityServer4IdentityServ https github com IdentityServ 后端的 identitymode https github com identitymode oidc https github com perarnborg vuex oidc wiki 打开项目 Vue Demo 安装依赖 npminstall

    2026年3月26日
    2
  • allure 报告[通俗易懂]

    allure 报告[通俗易懂]一、简介二、下载安装三、报告生成四、环境配置五、Python使用allure方法一、简介官方文档:https://docs.qameta.io/allure/二、下载安装1、linux下载安装先检查是否安装npm:whichnpm 未安装npm的话:curl–silent–locationhttps://rpm.nodesource.com/setup_10.x|bash- 安装:yuminstall-ynodejs …

    2022年7月26日
    24
  • python while循环实现九九乘法表

    python while循环实现九九乘法表用 while 循环实现九九乘法表代码如下 i 1j 1whilei lt 10 whilej lt i 1 print d d d j i i j end t j j 1print i i 1j 1 效果如下 这里需要注意的是制表符 end t 然后里层的 while 的循环完之后 需要换行 用 print 即可 重点是 里层的循环完了之后 需要将里层循环的变量置

    2026年3月16日
    2
  • 如何写接口测试用例

    如何写接口测试用例分享接口测试用例书写方式

    2026年3月18日
    2
  • C语言笔记 · ASCII码表

    C语言笔记 · ASCII码表ASCII 码对照表 平常使用非常重要 自己整理了一套表格

    2026年3月19日
    2
  • 特征金字塔池化

    特征金字塔池化1 特征金字塔池化如上图所示 将特征图的所有像素划分为 n nn timesnn n 个网格 并将其经过核为 n nn timesnn n 步长为 n n n n n n 的池化 可以选择最大池化或者平均池化 经过较为密集的池化 4 times4 形成 形成 形成 N timesC timesn timesn 的特征图 将其串联形成的特征图 将其串联形成的特征图 将其串联形成 C times 的格式 之后 在第 2 个步骤池化得到的特征图的基础上 取不同的 nnn 值 进行下一个池

    2025年10月28日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号