市面上的日志框架
JUL鸦概、JCL慕的、jboss-logging阎肝、logback、log4j肮街、log4j2风题、slf4j.....
其中分為日志門面(抽象層、接口)和日志實(shí)現(xiàn)
日志門面 | 日志實(shí)現(xiàn) |
---|---|
JCL(jakarta Commons Logging) 、 SLF4J(Simple Logging Facade java)沛硅、 jboss-logging | Log4j JUL(java.util.logging)眼刃、Log4j2、Logback |
現(xiàn)在一般抽象層選擇:SLF4J摇肌。日志實(shí)現(xiàn)選擇:Logback
SLF4J的使用
如何在系統(tǒng)中使用SLF4J
首先導(dǎo)入slf4j的jar包和logback的jar包擂红。開發(fā)的時(shí)候,日志記錄方法的調(diào)用围小,不應(yīng)該直接使用日志的實(shí)現(xiàn)類昵骤,而是應(yīng)該調(diào)用日志抽象層(接口)里面得方法。
slf4j的官網(wǎng)吩抓,下面是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和各實(shí)現(xiàn)框架的搭配使用關(guān)系圖
比如要使用logback日志實(shí)現(xiàn)框架,只需要在項(xiàng)目中導(dǎo)入slf4j的jar和logcak的jar疹娶。
又比如要使用log4j日志實(shí)現(xiàn)框架伴栓,因?yàn)閘og4j比slf4j出現(xiàn)較早所以log4j沒有實(shí)現(xiàn)slf4j的接口。所以要使用slf4j調(diào)用log4j首先導(dǎo)入slf4j和log4j的jar雨饺,其次導(dǎo)入slf4j和log4j的適配jar包钳垮,當(dāng)調(diào)用slf4j的方法時(shí)會調(diào)用適配包的實(shí)現(xiàn)方法,實(shí)現(xiàn)方法又調(diào)用log4j的方法额港。本質(zhì)還是調(diào)用的是log4j饺窿。
另外每一個(gè)框架都有自己的配置文件,使用slf4j后移斩,配置文件還是做成日志實(shí)現(xiàn)框架自己本身的配置文件肚医。
項(xiàng)目中統(tǒng)一使用slf4j進(jìn)行輸出
在開發(fā)過程中會導(dǎo)入別得框架比如:Spring采用的是commons-logging日志框架,Hibernate采用得是jboss-logging等等∠虼桑現(xiàn)在想將這些框架中的日志統(tǒng)一采用slf4j進(jìn)行輸出肠套。
比如:框架中如果使用了slf4j日志門面logback日志實(shí)現(xiàn),想講其他框架的日志統(tǒng)一使用logback輸出猖任。首先如果其他框架使用了commons-logging日志實(shí)現(xiàn)你稚,則將該框架中得commons-logging包排除,再導(dǎo)入jcl-over-slf4j的替換jar包朱躺。該替換包的作用就是包含commons-logging中得類刁赖,當(dāng)調(diào)用類中得方法時(shí)實(shí)際調(diào)用得是slf4j的方法。
資料來源:尚硅谷周陽老師springboot教程中的日志部分长搀。