我相信对于绝大多数小白来说,日志框架这一块会特别的头痛,特别是在一个大项目中,POM文件中包含了各种各样的日志依赖,然后各种各样的日志依赖(slf4j,logging,log4j,logback等)又相互冲突,导致我们经常不知道该怎么办,对于输出的日志格式也经常是随缘的,系统怎么输出就怎么看,根本拿它没有办法。现在就让我们来全面的了解一些不同的日志框架,使其可以很好的为我们所用,成为我们消灭bug的一个好帮手。
The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time
我们日常比较常见的日志框架有slf4j、logging、log2j,logback,slf4j的全称是Simple Logging Faced for Java,采用的是一种门面模式,是各种日志的系统实现(logging,log4j,logback)的抽象层或者接口层。因此我们就可以把slf4j理解成各种日志框架的api,这样我们在需要使用日志的地方,使用的是slf4j的api,而不是特定的日志框架的api去打印日志,提高了可扩展性和可维护性。
对于slf4j在日志系统中的地位,官网中的示意图如下:
接下来看一些日志框架使用的例子
第一种只引入slf4j
上面的意思是,在运行的时候,找不到日志的实现,所以slf4j默认的使用了一个什么也不做的实现。
第二种引入slf4j和simple
可见日志已经打印出来了,而且还不需要任何的配置。
第三种使用slf4j和log4j
在没有配置log4j输出格式的时候,系统就会进行提醒,不会打印出日志。进行如下配置:
第四种使用slf4j和jdk