日志门面概述
当系统变得更加复杂的时候,日志就容易发生混乱。对着系统开发的进行,可能会更新不同的日志框架,造成当前系统中存在不同的日志依赖,让我们难以统一的管理和控制。就算我们强制要求所有的模块使用相同的日志框架,系统中也难以避免地使用其他类似spring、mybatis等其他第三方框架,它们依赖于我们规定不同的日志框架,而且他们自身的日志系统就有着不一致性,依然会出来日志体系的混乱。
所以我们要借鉴JDBC的思想,为日志系统也提供一套门面,那么我们就可以面向这些接口规范来开发,避免了直接依赖具体的日志框架,这样我们的系统在日志中,就存在了日志的门面和日志的实现
日志框架的演变史
log4j–>JUL–> JCL–>logback–>slf4j–>log4j2
jdk最早的时候,并没有提供日志记录,通过最简单的system.out进行输出
apche 组织有个小伙设计出了log4j日志框架,出来以后,广大开发者推崇
所有jdk1.4也设计出了JUL日志框架,和log4j可以抗衡一下
这时候有的公司喜欢用java提供的JUL,有的公司喜欢log4j
但是根据不同需求可能需要发生转变,apache组织考虑到这个问题,所以apache 统一了JUL和log4j规范,设计了JCL,不管用JUL还是log4j,代码被统一管理了
过了段时间,log4j创始人跟apache闹了点矛盾,就开始单飞了,基于log4j设计出了全新的框架logback,从功能上来说比log4j更加强大,性能上也非常的强大,但是用的人不多,因为JCL日志门面默认是不支持logback
所以这个哥们又设计出了全新的设计门面,slf4j,支持以上所有的日志框架,而且操作起来非常简单
当这哥俩一起诞生以后,很少有人用JCL+具体的日志框架了,造成apache日志门面技术面临被淘汰的场景,他们蛰伏了两年,基于logback开放的源代码,设计出了全新的日志框架log4j2,功能上而言和logback是完全一样的,但是性能上要高很多,既是日志门面技术,也是日志框架
slf4j也支持桥接连接log4j2,所以现在比较经典的版本就是slf4j+logback或者是slf4j+log4j2