SLF4J不同于其他日志類庫(kù),與其它有很大的不同。SLF4J(Simple logging Facade for Java)不是一個(gè)真正的日志實(shí)現(xiàn),而是一個(gè)抽象層( abstraction layer),它允許你在后臺(tái)使用任意一個(gè)日志類庫(kù)。SLF4J使你的代碼獨(dú)立于任意一個(gè)特定的日志API,這是一個(gè)對(duì)于開發(fā)API的開發(fā)者很好的思想。
還有一個(gè)SLF4J API的特性,占位符(place holder),在代碼中表示為“{}”的特性。占位符是一個(gè)非常類似于在String的format()方法中的%s,因?yàn)樗鼤?huì)在運(yùn)行時(shí)被某個(gè)提供的實(shí)際字符串所替換。這不僅降低了你代碼中字符串連接次數(shù),而且還節(jié)省了新建的String對(duì)象。
在你的開源或內(nèi)部類庫(kù)中使用SLF4J會(huì)使得它獨(dú)立于任何一個(gè)特定的日志實(shí)現(xiàn),這意味著不需要管理多個(gè)日志配置或者多個(gè)日志類庫(kù),你的客戶端會(huì)很感激這點(diǎn)。SLF4J提供了基于占位符的日志方法,這通過去除檢查isDebugEnabled(), isInfoEnabled()等等,提高了代碼可讀性。通過使用SLF4J的日志方法,你可以延遲構(gòu)建日志信息(Srting)的開銷,直到你真正需要,這對(duì)于內(nèi)存和CPU都是高效的。