当我们的系统变的复杂的之后,难免会集成其他的系统,不同的系统之间可能会使用不同的日志系统。在一个系统中,我们的日志框架可能会出现多个,会出现混乱,而且随着时间的发展,可能会出现新的效率更高的日志系统,如果我们想切换代价会非常的大。如果我们的日志系统能和jdbc一样,有一套自己的规范,其他实现均按照规范去实现,就能很灵活的使用日志框架了。
日志门面就是为了解决这个问题而出现的一种技术,日志门面是规范,其他的实现按照规范实现各自的日志框架即可,我们程序员基于日志门面编程即可。
当前最流行的就是logback和log4j2
如果大家需要请私信我,免费给大家(泰山版2020),请大家以学习为目的,不要拿去复印,上传网上赚钱
简单日志门面(Simple Logging Facade For Java)SLF4)主要是为了给Java日志访问提供一套标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。当然sf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j、 logback等),中间使用桥接器完成桥接。
目前市面上最流行的就是他了
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
@Test
void test(){
final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
logger.error("error");
logger.warn("warn");
logger.info("info");
logger.debug("debug");
logger.trace("trace");
//占位符输出方式
logger.warn("{}first,{}second","zhangsan",18);
}
SLF4]支持各种日志框架。SLF4J发行版附带了几个称为SLF4J绑定的jar文件,每个绑定对应一个受支持的框架。
通常,您依赖的某些组件依赖于SLF4J以外的日志记录API。您也可以假设这些组件在不久的将来不会切换到SLF4J。为了解决这种情况,SLF4J附带了几个桥接模块,这些模块将对log4j,JCL和java.utillogging APl的调用重定向,就好像它们是对SLF4J的API一样。
原始使用log4j的api写代码,但是具体的实现给你抽离了,我们依赖了一个中间层,这个层其实是用旧的api操作slf4j,而不是操作具体的实现。
桥接解决的是项目中日志的遗留问题,当系统中存在之前的日志API,可以通过桥接转换到slf4j的实现