#yyds干货盘点#Java日志门面之SLF4J

知识的价值不在于占有,而在于使用。这篇文章主要讲述#yyds干货盘点#Java日志门面之SLF4J相关的知识,希望能为你提供帮助。
第五章 SLF4J1.  日志门面概述1.1  门面模式(外观模式)
我们先谈一谈GoF23种设计模式其中之一。
门面模式(Facade Pattern),也称之为外观模式,其核心为:外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。
外观模式主要是体现了java中的一种好的封装性。更简单的说,就是对外提供的接口要尽可能的简单。
1.2  日志门面
前面介绍的几种日志框架,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。
为了解决这个问题,就是在日志框架和应用程序之间架设一个沟通的桥梁,对于应用程序来说,无论底层的日志框架如何变,都不需要有任何感知。只要门面服务做的足够好,随意换另外一个日志框架,应用程序不需要修改任意一行代码,就可以直接上线。
1.3  常见的日志框架及日志门面
常见的日志实现:JUL、log4j、logback、log4j2
常见的日志门面 :JCL、slf4j
出现顺序 :log4j --> JUL--> JCL--> slf4j --> logback --> log4j2
2.  SLF4J2.1  SLF4J简介
简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。 当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j、logback等),中间使用桥接器完成桥接。所以我们可以得出SLF4J最重要的两个功能就是对于日志框架的绑定以及日志框架的桥接。
【#yyds干货盘点#Java日志门面之SLF4J】官方网站:  ??https://www.slf4j.org/??
2.2  SLF4J桥接技术
通常,我们依赖的某些组件依赖于SLF4J以外的日志API。我们可能还假设这些组件在不久的将来不会切换到SLF4J。为了处理这种情况,SLF4J附带了几个桥接模块,这些模块会将对log4j,JCL和java.util.logging API的调用重定向为行为,就好像是对SLF4J API进行的操作一样。
2.3  SLF4J案例实现
创建Maven工程,导入依赖

< !--slf4j 核心依赖-->
< dependency>
< groupId> org.slf4j< /groupId>
< artifactId> slf4j-api< /artifactId>
< version> 1.7.25< /version>
< /dependency>
< !--slf4j 自带的简单日志实现 -->
< dependency>
< groupId> org.slf4j< /groupId>
< artifactId> slf4j-simple< /artifactId>
< version> 1.7.25< /version>
< /dependency>

设置jdk版本
< build>
< plugins>
< !-- 设置编译版本为1.8 -->
< plugin>
< groupId> org.apache.maven.plugins< /groupId>
< artifactId> maven-compiler-plugin< /artifactId>
< version> 3.1< /version>
< configuration>
< source> 1.8< /source>
< target> 1.8< /target>
< encoding> UTF-8< /encoding>
< /configuration>
< /plugin>
< /plugins>
< /build>


    推荐阅读