SLF4J、JCL、JUL、log4j、logback的关系

1. 名词解释

JUL(java.util.logging)

Java自带的日志系统。

log4j

Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture.

Apache Log4j 2是Log4j的升级版,对Log4j 1.x进行了重大改进,并提供了Logback中可用的许多改进,同时解决了Logback架构中的一些固有问题。

logback

Logback 继承自 log4j。

Logback 的架构非常的通用,适用不同的使用场景。Logback 被分成三个不同的模块:logback-core,logback-classic,logback-access。

logback-core 是其它两个模块的基础。logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J,所以你可以随意的从其它日志框架(例如:log4j 或者 java.util.logging)切回到 logack。

logback-access 可以与 Servlet 容器进行整合,例如:Tomcat、Jetty。它提供了 http 访问日志的功能。

JCL(Jakarta/Apache Commons logging)

The Apache Commons Logging (JCL) provides a Log interface that is intended to be both light-weight and an independent abstraction of other logging toolkits. It provides the middleware/tooling developer with a simple logging abstraction, that allows the user (application developer) to plug in a specific logging implementation.

JCL提供了一个Log接口,它是轻量的且独立于其他日志工具的抽象。它为中间件/工具开发者提供一个简单的日志抽象,允许用户(应用开发者)插入特定日志实现。

JCL provides thin-wrapper Log implementations for other logging tools, including Log4J, Avalon LogKit (the Avalon Framework’s logging infrastructure), JDK 1.4, and an implementation of JDK 1.4 logging APIs (JSR-47) for pre-1.4 systems. The interface maps closely to Log4J and LogKit.

JCL为其他日志工具提供轻薄包装的Log实现,包括Log4J,Avalon LogKit(Avalon Framework的日志基础设施),JDK1.4和用于1.4之前版本系统的JDK1.4日志API(JSR-47)的实现。该接口紧密映射到Log4J和LogKit。

SLF4J

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

SLF4J是各种日志框架(如java.util.logging, logback, log4j)的一个简单外观或抽象,它允许最终用户在部署时插入需要的日志系统。

Note that SLF4J-enabling your library implies the addition of only a single mandatory dependency, namely slf4j-api.jar. If no binding is found on the class path, then SLF4J will default to a no-operation implementation.

请注意,启用SLF4J意味着你的library必须强制添加依赖包slf4j-api.jar。如果在classpath中没有与之绑定的实现,
SLF4J将提供一个默认的无操作实现。

小结

通过以上名词解释可用得出:

  • JUL、log4j、logback都是日志框架,JUL为Java自带日志框架,logback是log4j框架的升级版。目前的主流是logback。
  • JCL、SLF4J是日志框架的抽象,他们都致力于提供统一的日志接口,通过插件的方式在运行时注入具体的日志实现。目前看来SLF4J更胜一筹。

2. SLF4J:桥接遗留接口

通常,你依赖的一些组件并非使用SLF4J日志API。你也可以假定这些组件在可预见的将来也不会切换到SLF4J。为解决这些问题,SLF4J提供了一些桥接组件来将调用重定向到log4j、JCL和JUL API,使他们看起来像是实现了SLF4J API。下图说明了此方法。
在这里插入图片描述

参考

commons-logging
Apache Log4j2
什么是 logback
Simple Logging Facade for Java (SLF4J)
Java 日志系列篇一 原生 Java.util.logging
Bridging legacy APIs

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SLF4Jlog4jlogback是Java的三个不同的日志框架。SLF4J是Java的一个日志门面,它提供了一些通用的API,可以与不同的具体日志框架集成使用。log4j是一个具体的日志框架,它提供了丰富的功能和配置选项。logback则是由log4j的作者设计完成的一个日志框架,它拥有更好的特性,并且是SLF4J的原生实现。 区别如下: 1. SLF4J是一个日志门面,它只提供了一些通用的API,而不是具体的实现。它的作用是为了让开发人员可以在不同的日志框架之间进行切换和集成,而不需要修改代码。 2. log4j是一个具体的日志框架,它提供了丰富的功能和配置选项。log4j可以与SLF4J结合使用,需要提供一些对应的jar包。 3. logback是由log4j的作者设计完成的日志框架,它是SLF4J的原生实现。logback拥有更好的特性,并且可以完整地实现SLF4J的API。logback包括了三个模块:logback-core、logback-classic和logback-access,分别用于提供基础功能、改良版本以及与Servlet容器集成。 因此,SLF4J提供了通用的日志接口,log4j是其中一个具体的实现,而logback则是log4j的改良版本,同时也是SLF4J的原生实现。根据具体需求和偏好,开发人员可以选择使用其中的任意一个日志框架。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java日志框架SLF4Jlog4j以及logback的联系和区别](https://blog.csdn.net/weixin_30241919/article/details/101487496)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值