| JCL、SLF4j、jboss-logging | Log4j、 JUL(java.util.logging) Log4j2、 Logback |
每一种日志框架输出信息的效率也不尽相同,而我们日常开发使用的框架中往往都会引入一个日志框架来辅助输出框架信息,然而框架之间由于历史迭代原因及框架性能等问题,选择的日志框架也不一样,常见的框架与默认选择的日志系统关系如下:
框架 | 日志 |
---|---|
Spring | JCL |
SpringBoot | Sfl4j–>logback |
Hibernate3 | Slf4j |
Struts2 | LoggerFactory(com.opensymphony.xwork2.util.logging.LoggerFactory) |
由于历史迭代原因,JCL和jboss-logging日志框架,基本已经很久没有更新了,不太适合作为现在框架的主流选择,那么剩下的选择中log4j、slf4j是使用最多的,然而由于log4j的输出性能问题,log4j的作者选择重新编写了一个日志门面–Slf4j,并且编写了基于Slf4j的日志实现–logback,其输出信息的效率远超log4j,解决了log4j遗留下的性能问题,所以在SpringBoot框架中,默认也选择了Slf4j来作为默认日志框架
slf4j的使用
现在,我们来看看slf4j的使用,引入maven依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
按照slf4j官方的说法,,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的实现方法,获取通过日志工厂创建的日志实例,即可输出对应的日志:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void