slf4j log4j logback之间的关系,哪个更好些

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶高效! 阅读详情

SLF4J(The Simple Logging Facade for Java)

官方文档是这样说明的

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time. Note that SLF4J-enabling your library/application implies the addition of only a single mandatory dependency, namely slf4j-api-1.7.22.jar.

简答的讲就是slf4j是一系列的 日志接口,而log4j logback是具体实现了的 日志框架

因为是接口,所以在项目中如果你不引用log4j 、logback或者其它日志框架你会发现,控制台的输出是这样的



从运行结果可以看到,由于没有给出具体的logger实现,无法在控制台输出日志。也就是说我们在具体开发中,需要绑定一个日志框架,才能正常的使用slf4j。

log4j和logback呢

而log4j和logback就是两个受欢迎的日志框架。但两者又有不同。

  • log4j是apache实现的一个开源日志组件。(Wrapped implementations)
  • logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现。(Native implementations)

接下来一起看一下应用程序对日志框架的调用关系,看下图



可以看到logback是直接实现了slf4j的接口,而log4j不是对slf4j的原生实现,所以slf4j api在调用log4j时需要一个适配层。

官方文档对logback是这样说的:

Native implementation There are also SLF4J bindings external to the SLF4J project, e.g.logback which implements SLF4J natively. Logback'sch.qos.logback.classic.Logger class is a direct implementation of SLF4J'sorg.slf4j.Logger interface.Thus, using SLF4J in conjunction with logback involves strictly zero memory and computational overhead. 

也就是说logback实现slf4j是不消耗内存和计算开销的。


最后总结一下:

  1. slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。
  2. 他们可以单独的使用,也可以绑定slf4j一起使用。
  • 单独使用。分别调用框架自己的方法来输出日志信息。
  • 绑定slf4j一起使用。调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)

显然这里我们不推荐单独使用日志框架。假设项目中已经使用了log4j,而我们此时加载了一个类库,而这个类库依赖另一个日志框架。这个时候我们就需要维护两个日志框架,这是一个非常麻烦的事情。而使用了slf4j就不同了,由于应用调用的抽象层的api,与底层日志框架是无关的,因此可以任意更换日志框架。






*以上整理内容来自
http://www.cnblogs.com/Sinte-Beuve/p/5758971.html 更详细内容请移步。




几种志框架Log4j Log4j2 SLF4J logback和Apache Commons Logging的比较 作为Java开发人员,对于日志记录框架一定非常熟悉。而且几乎在所有应用里面,一定会用到各种各样的日志框架用来记录程序的运行信息。而对于一个成熟的Java应用,这个是必不可少的。在开发和调试阶段,日志可以帮助我们快的定位问题;而在应用的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多企业会通过收集日志信息来对系统的运行状态进行实时监控预警。 总体概览 目前的日志框架有JDK自带的logging,log4j1、log4j2、logback ,这些框架都自己定制了日志 API ,并且有相应的实 阅读详情

相关推荐

【实战系列】DataX 是什么及使用场景

【实战】DataX 是什么及使用场景 介绍 DataX 是阿里巴巴集团开源的一个数据同步工具,用于实现不同数据源之间的数据同步和迁移。它提供了一个框架,通过插件的形式支持各种数据源,如 MySQL、Oracle、HDFS、HBase 等。DataX 的核心设计理念是“简单、可靠、高效”,旨在解决大数据领域复杂的数据同步问题。 DataX 的特点 插件化:DataX采用插件化架构,可以方便地扩展支持多的数据源。 高性能:DataX针对大量数据的传输做了优化,支持多线程并发读取、写入,以及数据的批量传输。

cc20100608的专栏 1814

slf4jlog4j

slf4jlog4j slf4j是通用的接口规范,log4j是具体实现的日志插件,slf4j也可以搭配其他实现的jar包一起使用。 本文参考3W学习方法来叙述内容。 一、What 1、slf4jlog4j的区别是什么? log4j:log for java,Apache的一个开源项目,可以通过一个配置文件灵活配置日志的输送目的地、记录级别、输出格式。 slf4j:simple log facade for java,译为简单日志门面。官方介绍为,SLF4J作为各种日志系统的简单Facade或抽象,允

hkdgxyj的博客 8094

SLF4JLogback

SLF4J Commons Logging和Log4j是一对好基友,它们一个负责充当日志API,一个负责实现日志底层,搭配使用非常便于开发。 有的童鞋可能还听说过SLF4JLogback。这两个东东看上去也像日志,它们又是啥? 其实SLF4J类似于Commons Logging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。 为什么有了Commons Logging和Log4j,又会蹦出来SLF4JLogback?这是因为Java有着非常悠久的开源历史,不但OpenJDK本身是开

a473916927的博客 224

Slf4jLog4j的区别

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

HTX__的博客 1万+

Log4j

日志的等级 fatal(致命) error warn info debug trace(堆栈) 日志输出控制文件: 日志信息的输出位置:控制日志信息将要输出的位置,是输出到控制台还是文件的等 日志信息的输出格式:控制日志信息的显示格式,即以怎样的字符串形式显示 日志信息的输出级别:控制日志信息的显示内容,即显示哪些级别的日志信息 日志附加器 所谓日志附加器,就是为日志记录器附加上很多其他设...

weixin_45452866的博客 700

带你深入Java Log框架,彻底搞懂Log4JLog4J2、LogBackSLF4J

最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j, log4j2,slf4jlogback,初一看确实有点头大,那么区别是啥呢?之前也大概知道一些,查找了大量相关资料,这里好好总结一下,相信你读完就会熟练掌握。

老男孩的架构路 606

log4j 版本_002-slf4j+log4j 使用及源码分析

log4jlog4j2、logback日志关系1、Apache Log4j 是一个老的日志框架,并且是多年来最受欢迎的日志框架。2015 年 8 月 5 日,该项目管理委员会宣布 Log4j 1.x 已达到使用寿命。 建议用户使用 Log4j 1 升级到 Apache Log4j2。2、logback 是由 log4j 创始人设计的又一个开源日志组件,作为流行的 log4j 项目的后续版本,从而...

weixin_39606244的博客 625

Java日志框架介绍

org.slf4j.impl.StaticLoggerBinder(class) 与具体的日志实现组件实现的桥接类,具体的日志实现组件需要定义org.slf4j.impl包,并在org.slf4j.impl包下提供此类,注意在slf4j-api-version.jar中不存在org.slf4j.impl.StaticLoggerBinder,在源码包slf4j-api-version-source.jar中才存在此类。可以简单的理解为接口与接口的实现,调用者只需要关注接口而无需关注具体的实现,做到解耦。

weixin_57763462的博客 1139

日志相关知识梳理

日志相关知识梳理概述JCLSLF4J使用jcl绑定器slf4j 的桥接器如何使用 概述 日志我们工作当中经常使用,我还没真心认真梳理过其中的知识,感觉比较惭愧今天把这个相关知识梳理下,下一篇写一下spring5日志的改造,如果不提前梳理下我感觉很难把spring5和spring4日志不同之处说明白 日志对于编程人员来说应该是十分重要的僚机了 当下比较流行的几款日志框架分别是JCL, Slf4j,jboss-logging,log4jlog4j2,logback和JUL。我靠这么多框架,应该还有我没举例出来

291

日志架构选型:彻底搞懂Log4jLog4j2、LogBackSlf4j之间关系

彻底搞懂Log4jLog4j2、LogBackSlf4j之间关系

永远保持随时离开的技术能力! 9249

slf4jlog4jlogback之间关系

1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来实现,这些具体的日志系统就有log4j,logback,java.util.logging等,它们才实现了具体的日志系统的功能。 如何...

小小本科生 3570

最通俗易懂的 JAVA slf4j,log4j,log4j2,logback 关系与区别以及完整集成案例

slf4jlog4j,log4j2,logback 是什么关系,有何区别 slf4j不是一个真正意义的可用应用程序,他是一个接口层 log4j2 日志框架完整集成例子 > 就像java 的接口性质一样,单纯集成了slf4j 的话,执行比如log.info log.debug等方法,只能在控制台打印日志,并不会在持久化到文件,或者其他自定义介质上,slf4j至少需要一个实现层框架,比如log4jlogbacklogback 日志框架完整集成例子

峡谷电光马仔的博客 6511

Log4j,Slf4j,Logback三者之间的联系以及区别

最近公司可能需要做一个基于java日志分析系统,要做这样一个系统,首要工作就是要完成日志的收集工作。Java中的日志的主流框架Log4jLog4j2Logback。目前作者所做的大部分项目都是基于以上几个框架来管理我们的日志。这几个框架有一个共同点都脱离不开Sfl4j这个框架。本文作者从以下几个方面带大家了解一下Java中的日志框架

牧码人博客@luckyhe.com 1846

log4jlogback 以及slf4j三者之间关系

在项目的开发中由于对于log4jlogback以及slf4j之间关系和相关的知识不能清晰掌握,在业余时间进行记录。 1、三者之间关系  1)   简答的讲就是slf4j是一系列的日志接口,而log4j logback是具体实现了的日志框架。   因为是接口,所以在项目中如果你不引用log4jlogback或者其它日志框架你会发现,由于没有给出具体的logger实现,   控制台...

weixin_34310127的博客 3087

日志框架整合】Slf4jLog4jLog4j2、Logback配置模板

SLF4J(Simple Logging Facade for Java)是一个日志框架的抽象层,可以与不同的日志实现进行绑定。它允许开发人员在代码中使用统一的日志接口,而无需关心具体的日志实现。简单来讲就是slf4j是一系列的日志门面,也可以理解为 是接口,而 和 是具体实现了这些接口的日志框架slf4j 具备很高的易用性和很好的抽象性。LogbackLog4j的后继版本,由Log4j的作者开发。相比Log4jLogback具有好的性能和丰富的功能,同时也易于配置和扩展。Logback

实用技术干货分享⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄对您有用的话请点个关注吧~ 2253

java:slf4jlog4jlog4j2、logback日志框架的区别与示例

java:slf4jlog4jlog4j2、logback日志框架的区别与示例

分享前端开发工程师的一些日常生活、前端知识点、职业发展、对一些问题的看法、感悟等等 3201

SLF4J、JCL、JUL、log4jlogback关系

SLF4J、JCL、JUL、log4jlogback关系1. 名词解释1.1 JUL(java.util.logging)1.2 log4j1.3 logback1.4 JCL(Jakarta/Apache Commons logging)1.5 SLF4J1.6 小结2. 桥接遗留接口参考 1. 名词解释 1.1 JUL(java.util.logging) Java自带的日志系统。 1.2...

ttyy1112的专栏 1257
上一篇: Eclipse安装Activiti Designer插件
下一篇: SNMP/MIB/LOCATE/GREP/OID/SNMP V1 / V2c Error Messages
Buty9147
博客等级 码龄16年 8粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值