1. 程式人生 > 實用技巧 >SLF4J的靜態繫結

SLF4J的靜態繫結

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

SLF4j是Apache Common Logging的代替者。

Apache Common Logging使用的是動態繫結來確定具體日誌庫,在執行時從classpath中尋找可用的具體日誌庫,這樣會產生很多classloader和classpath相關的問題,而且很難排查。

Apache Common Logging不同,SLF4j採用了靜態繫結來確定具體日誌庫。靜態繫結就是為每一個具體的日誌庫寫一個包名和類名都相同類:org.slf4j.impl.StaticLoggerBinder,這個類的功能就是呼叫具體的日誌庫。這個類會存放在Adaptation layer或者native implementation of slf4j-api的jar包中。SLF4j的使用者只要把具體日誌庫對應的Adaptation layer或者native implementation of slf4j-api的jar包放入classpath中,SLF4j便會裝載(load)對應版本的org.slf4j.impl.

StaticLoggerBinder,從而呼叫具體的日誌庫。

下圖是呼叫關係圖

134544_OOUn_1452390.png

下圖是從SLF4j官網(http://www.slf4j.org/manual.html)擷取的架構圖,紅框中是我標註的每個jar包中和繫結有關的關鍵類。


115731_Q8w4_1452390.png

轉載於:https://my.oschina.net/fifadxj/blog/521170