简介
门面模式(Facade Pattern),也称之为外观模式,其核心为:外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。
就像前面介绍的几种日志框架一样,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。
为了解决这个问题,就是在日志框架和应用程序之间架设一个沟通的桥梁,对于应用程序来说,无论底层的日志框架如何变,都不需要有任何感知。只要门面服务做的足够好,随意换另外一个日志框架,应用程序不需要修改任意一行代码,就可以直接上线。
所以我们需要借鉴JDBC的思想,为日志系统也提供一套门面,那么我们就可以面向这些接口规范来开发,避免了直接依赖具体的日志框架。这样我们的系统在日志中,就存在了日志的门面和日志的实现。
常用门面框架
- JCL
- slf4j
常用日志实现
- JUL
- log4j
- logback
- log4j2
日志门面和日志实现的关系
日志框架出现时间顺序
log4j -->JUL–>JCL–> slf4j --> logback --> log4j2
推荐使用
目前主流为 Spring-boot使用: slf4j + logback
log4j2 性能较高,也可以使用 slf4j + log4j2
logback log4j 和slf4j都是同一作者。根据作者宣称的:
slf4j的出现是为了替代commons-logging
logback的出现是为了替代log4j,用作者的话,叫:“picking up where log4j leaves off”
logback比log4j会有更高的性能,和更多的功能支持。