聊一聊Java日誌之一:slf4j

1、引言

  程序員都知道,日誌對於一個應用系統來講相當重要,如今應該也沒有無日誌的系統了吧。不少程序員都知道 Log4j,Logback,java.util.logging 等日誌庫,最近看到一些老的項目仍是單純地只使用 Log4j 等日誌庫,若是你還不懂 Slf4j,那麼從如今開始,該是時候學習使用下 Slf4j 了。

  SLF4J,即簡單日誌門面(Simple Logging Facade for Java),它並非用來替代 Log4j,Logback 等日誌庫的,它只是提供了一堆接口以及一個 LoggerFactory 工廠類,是爲了兼容不一樣的日誌庫而抽象出來的適配器接口。具體的日誌實現仍是須要使用不一樣的日誌框架來完成。java

  SLF4J 和 JCL(之前叫 Jakarta Commons Logging,如今叫 Apache Commons Logging) 都是日誌門面,所不一樣的是 JCL 是在運行時動態尋找日誌庫進行綁定,SLF4J 是在編譯時靜態綁定指定的日誌庫。如今仍是不少應用系統使用 JCL + Log4j 這種搭配的,不過當程序規模愈來愈龐大是,JCL 的動態綁定並非總能成功的,在Sping官方文檔中 Not Using Commons Logging 小節也提到由於算法問題引發。大概這也是 SLF4J 產生的一個緣由吧。程序員

2、簡單使用

  這裏使用 slf4j + log4j 演示下簡單的使用。須要導入三個包:slf4j-1.7.25.jarslf4j-log4j12-1.7.25.jarlog4j-1.2.17.jar 。而後以下使用:算法

package cn.mqq;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author mqq
 * @create 2018-03-13 23:46
 */
public class Test {
    private static final Logger log = LoggerFactory.getLogger(Test.class);
    public static void main(String[] args) {
        log.debug("debug 測試");
        log.info("info 測試");
        log.warn("warn 測試");
        log.error("error 測試");
    }
}

運行結果:apache

mark

發現並無打印出日誌,這是由於缺乏了 log4j.properties 配置文件。在 /src/main/resources 目錄下添加文件 log4j.properties,內容以下:app

log4j.rootLogger = DEBUG,CONSOLE

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold = INFO
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%c] - %m%n

再次運行以下:框架

mark

運行工程。學習

3、小結

  日誌的使用就是這麼簡單,用了 slf4j 之後,經過修改不一樣的 jar 包,能夠很方便地更換不一樣的日誌框架,如把 slf4j-log4j12-1.7.25.jarlog4j-1.2.17.jar 換成 logback-classic-1.2.3.jar 包便可把 log4j 日誌庫換成 logback 日誌庫,配置文件也要換成相應的 logback 配置文件。測試

相關文章
相關標籤/搜索