log4j和slf4j日誌框架入門
阿新 • • 發佈:2019-02-18
簡單日記門面(simple logging Facade for java)SLF4J是為各種loging APIs提供一個簡單統一的介面,從而使得終端使用者能夠在部署的時候配置自己希望的loging APIs實現。
準確的說,slf4j並不是一種具體的日誌系統,而是一個使用者日誌系統的facade,允許使用者在部署最終應用時方便的變更其日誌系統。
在系統開發中,統一按照slf4j的API進行開發,在部署時,選擇不同的日誌系統包,即可自動轉換到不同的日誌系統上。比如:選擇JDK自帶的日誌系統,則只需要將slf4j-api-1.5.10.jar和slf4j-jdk14-1.5.10.jar放置到classpath中即可,如果中途無法忍受JDK自帶的日誌系統了,想換成log4j的日誌系統,僅需要用slf4j-log4j12-1.5.10.jar替換slf4j-jdk14-1.5.10.jar即可(
當然也需要log4j的jar及 配置檔案)
java程式碼:slf4j中的佔位符—不再需要冗長的級別判斷
大家應該還記得,在log4j中,為了提高執行效率,往往在輸出資訊之前,還要進行級別判斷,以避免無效的字串連線操作。如下:
if (logger.isDebugEnabled()){
logger.debug(“debug:“+name);
}
slf4j巧妙的解決了這個問題:先傳入帶有佔位符的字串,同時把其他引數傳入,在slf4j的內容部實現中,如果級別合適再去用傳入的引數去替換字串中的佔位符,否則不用執行。
logger.info("{} is {}", new String[]{“x",“y"});
slf4j門面原理
在java中使用slf4j
獲得logger物件:
java程式碼:
- privatestaticfinal Logger logger = LoggerFactory.getLogger(Test.class);
- 輸出日誌資訊:
- logger.debug(“debug”);
private static final Logger logger = LoggerFactory.getLogger(Test.class);
輸出日誌資訊:
logger.debug(“debug”);