市面上的日志框架
JUL、JCL、jboss-logging、logback、log4j、log4j2、slf4j.....
其中分为日志门面(抽象层、接口)和日志实现
日志门面 | 日志实现 |
---|---|
JCL(jakarta Commons Logging) 、 SLF4J(Simple Logging Facade java)、 jboss-logging | Log4j JUL(java.util.logging)、Log4j2、Logback |
现在一般抽象层选择:SLF4J。日志实现选择:Logback
SLF4J的使用
如何在系统中使用SLF4J
首先导入slf4j的jar包和logback的jar包。开发的时候,日志记录方法的调用,不应该直接使用日志的实现类,而是应该调用日志抽象层(接口)里面得方法。
slf4j的官网,下面是slf4j的简单使用方法。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
SLF4J和各实现框架的搭配使用关系图
比如要使用logback日志实现框架,只需要在项目中导入slf4j的jar和logcak的jar。
又比如要使用log4j日志实现框架,因为log4j比slf4j出现较早所以log4j没有实现slf4j的接口。所以要使用slf4j调用log4j首先导入slf4j和log4j的jar,其次导入slf4j和log4j的适配jar包,当调用slf4j的方法时会调用适配包的实现方法,实现方法又调用log4j的方法。本质还是调用的是log4j。
另外每一个框架都有自己的配置文件,使用slf4j后,配置文件还是做成日志实现框架自己本身的配置文件。
项目中统一使用slf4j进行输出
在开发过程中会导入别得框架比如:Spring采用的是commons-logging日志框架,Hibernate采用得是jboss-logging等等。现在想将这些框架中的日志统一采用slf4j进行输出。
比如:框架中如果使用了slf4j日志门面logback日志实现,想讲其他框架的日志统一使用logback输出。首先如果其他框架使用了commons-logging日志实现,则将该框架中得commons-logging包排除,再导入jcl-over-slf4j的替换jar包。该替换包的作用就是包含commons-logging中得类,当调用类中得方法时实际调用得是slf4j的方法。
资料来源:尚硅谷周阳老师springboot教程中的日志部分。