SLF4J
维基百科,自由的百科全书
| 本条目需要擴充。(2009年9月30日) |
|
|
本条目需要精通或熟悉本主题的專業人士参与及協助编辑。 |
JAVA簡易日誌門面(Simple Logging Facade for Java,縮寫SLF4J),是一套包裝Logging 框架的介面程式,以外觀模式實现。可以在軟體部署的時候決定要使用的 Logging 框架,目前主要支援的有Java Logging API、log4j及logback等框架。以MIT 授權方式發佈。
SLF4J 的作者就是 log4j 的作者 Ceki Gülcü,他宣稱 SLF4J 比 log4j 更有效率,而且比 Apache Commons Logging (JCL) 簡單、穩定。
與 log4j 的比較 [编辑]
- log4j 提供 TRACE, DEBUG, INFO, WARN, ERROR 及 FATAL 六種紀錄等級,但是 SLF4J 認為 ERROR 與 FATAL 並沒有實質上的差別,所以拿掉了 FATAL 等級,只剩下其他五種。
- 大部分人在程序里面会去写logger.error(exception),其实这个时候log4j回去把这个exception tostring。真正的写法应该是logger(message.exception);而slf4j就不会使得程序员犯这个错误。
- log4j间接的在鼓励程序员使用string相加的写法,而slf4j就不会有这个问题 ,你可以使用logger.error("{} is+serviceid",serviceid);
- 使用slf4j可以方便的使用其提供的各种集体的实现的jar。(类似commons-logger)
- 从commons--logger和log4j merge非常方便,slf4j也提供了一个swing的tools来帮助大家完成这个merge。
- 提供字串內容替換的功能,會比較有效率,說明如下:
// 傳統的字串產生方式,如果沒有要紀錄 Debug 等級的訊息,就會浪費時間在產生不必要的訊息上
logger.debug("There are now " + count + " user accounts: " + userAccountList);
// 為了避免上述問題,我們可以先檢查是不是有開啟 Debug 訊息記綠功能,只是程式碼會比較複雜
if (logger.isDebugEnabled()) {
logger.debug("There are now " + count + " user accounts: " + userAccountList);
}
// 如果 Debug 等級沒有開啟,則不會產生不必要的字串,同時也能維持程式碼的簡潔
logger.debug("There are now {} user accounts: {}", count, userAccountList);
- SLF4J 只支援 MDC,不支援 NDC。