日志系统实现工具
java.util.logging(jul)
JDK中实现的日志系统。
log4j
最早得到广泛使用的日志系统。
logback
log4j的改良版本,比log4j拥有更多的特性,同时也带来很大性能提升。
logback分为3个组件,logback-core, logback-classic 和 logback-access。
logback-core提供了logback的核心功能,是另外两个组件的基础。
logback-classic则实现了slf4j的API,所以当想配合slf4j使用时,则需要引入这个包。
logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。
日志系统绑定工具
commons-logging(jcl)
Apache提供的日志系统绑定工具。jcl会在运行时动态绑定日志系统的实现类,用户只需要面向jcl的API进行开发。
slf4j
全称是The Simple Logging Facade for Java,是一个简单日志门面抽象框架。
slf4j会在程序启动时根据classpath中的日志系统实现(log4j, logback等)静态绑定日志系统的实现类,用户只需要面向slf4j的API进行开发,然后通过依赖配置来调整底层实际使用的日志系统实现类。
slf4j与实际日志系统的绑定
slf4j与实际日志系统进行绑定的依赖组件(Binding):
· slf4j-jdk14: slf4j到jdk-logging的Binding
· slf4j-log4j12: slf4j到log4j1的Binding
· log4j-slf4j-impl: slf4j到log4j2的Binding
· logback-classic: slf4j到logback的Binding
· slf4j-jcl: slf4j到commons-logging的Binding
PS: 上面的这些Binding在classpath中只能存在一个,如果有多个则会在程序启动时导致slf4j静态绑定失败。
其他日志系统API转到slf4j的桥接器
如果应用程序已经用了其他日志系统的API来进行开发(或应用程序的依赖中使用了其他日志系统的API),想在不修改程序代码的情况下将日志输出重定向到slf4j,就需要引入桥接器。
常用的桥接器有这些:
· jul-to-slf4j: jdk-logging到slf4j的桥接器
· log4j-over-slf4j: log4j1到slf4j的桥接器
· jcl-over-slf4j: commons-logging到slf4j的桥接器
例如我们开发的某个应用程序原本使用的是log4j来进行日志输出的,代码中也是用的log4j的API,现在想在不修改程序代码的基础上将日志系统转为使用logback,则只需要去掉原先的log4j依赖,然后加入slf4j-api、logback-classic、log4j-over-slf4j依赖。这样log4j的实现类实际上被桥接器log4j-over-slf4j替换掉了,其真正的实现是将log4j的日志输出重定向到了slf4j,而slf4j又绑定到了logback,所以日志系统就被切换过来了。
PS: 日志系统的Binding组件和桥接器有一些是冲突的,原因很好理解,举例说明:如果同时在应用程序中加入依赖slf4j-log4j12和log4j-over-slf4j,则slf4j会将日志输出绑定到log4j,而log4j又会把皮球踢还给slf4j,于是便会形成死循环。在理解了Binding组件和桥接器后,这些冲突的原因也能很快理解,在使用时就不会出错而不知道如何解决了。
Java日志系统相关工具梳理
发表于:2017-08-08
作者:网络转载
来源:
 相关文章
聊聊架构设计流程:设计备选方案 Java中的并发编程模型及其应对策略 掌握Java并发编程,避免无处不在的竞态条件 2024年,五个Java开发者应该关注的编程趋势 解除Java反复编译的困扰方法,优化开发效率 改善代码质量,试试这十种方法- 周排行
- 月排行
- 评论排行
-   高效IT:如何利用零代码开发平台快速...
-   生成式人工智能在软件开发过程现代化...
-   一体化好好的,为什么要前后端分离?
-   13种最佳App设计不止有设计美感,更跟...
-   12张图带你彻底理解分布式事务产生的...
-   我在 2023 年离不开的七个 JavaScript 必备工具
-   2023 年 Java 发展趋势
-   系统设计 | 应用、微服务、流程、规则编排
-   值得一试的五大AI编程助手
-   高效IT:如何利用零代码开发平台快速...
-   生成式人工智能在软件开发过程现代化...
-   一体化好好的,为什么要前后端分离?
-   衡量开发人员工作效率的五个技巧
-   2018年最全的App设计资源(工具+模板...
-   从软件出发,非功能测试思考总结
-   展望2017,谁是网络技术头牌?
-   C/C++单元测试工具Visual Unit 4 介绍
-   国内外最好用的6款Bug跟踪管理系统
-   性能测试指标评估必读
-   百度软件测试方案模板
-   38张史上最全的IT工程师技能图谱
-   C/C++单元测试工具Visual Unit 4 介绍
-   2019年,你会选哪些安全测试工具?
-   十款Web服务器性能压力测试工具
-   软件测试入门指南:周期、模型和文档化
-   记自动化测试成神学习之路
-   软件测试全景图 -最全的思维导图