使用slf4j和log4j2記錄日誌

1 入門

1.1 slf4j簡介

slf4j是一個日誌服務中間層。slf4j封裝了多種日誌庫的接口,使用slf4j後,若是要修改程序使用的日誌庫,只須要將對應日誌庫的jar放入classpath,不須要修改任何代碼。slf4j爲部署時更換日誌庫提供了靈活便利。apache

1.2 HelloWorld for slf4j

下面是一個來自slf4j官網的例子。api

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

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

這段代碼展現了slf4j的基本用法。在編譯和執行時,須要將slf4j-api-1.7.22.jar和slf4j-simple-1.7.22.jar加入classpath。這兩個jar包能夠從slf4j官網下載。spa

1.3 log4j2簡介

log4j2是一個日誌庫。log4j2是log4j的第二版,log4j2和log4j並不兼容。目前,log4j已經中止維護。debug

1.4 HelloWorld for slf4j & log4j2

slf4j做爲日誌服務中間層,將調用方和日誌庫隔離開,調用方不須要知道任何日誌庫的細節。在部署時,只需將對應日誌庫的jar包加入classpath,就能夠使用這個日誌庫。 將上面例子中的classpath稍做修改,增長下面3個jar包:log4j-slf4j-impl-2.x.jar、log4j-api-2.x.jar、log4j-core-2.x.jar,移除slf4j-simple-1.7.22.jar, 就成了slf4j和log4j的HelloWorld示例。日誌

若是使用log4j2做爲日誌庫,須要對其進行配置。log4j2的默認配置文件是classpath下的log4j2.xml。下面是一個簡單的log4j2.xml文件示例。xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

2 用法

2.1 引入依賴包

在編譯時,classpath中須要加入對象

  • slf4j-api-1.7.22.jar

在運行時,classpath須要加入接口

  • slf4j-api-1.7.22.jar
  • log4j-slf4j-impl-2.7.jar
  • log4j-api-2.7.jar
  • log4j-core-2.7.jar

2.2 導入類

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

2.3 構造logger對象

Logger logger = LoggerFactory.getLogger(MyClass.class);

2.4 記錄日誌

logger.info("Hello");
logger.debug("Temperature set to {}.", t);

2.5 配置log4j2

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

3 slf4j說明

3.1 日誌級別

slf4j支持如下級別的日誌部署

  • trace
  • debug
  • info
  • warn
  • error

4 log4j2說明

4.1 配置文件

4.1.1 配置文件路徑

log4j2的默認配置文件是classpath中的log4j2.xml。在啓動程序時,能夠經過設置參數log4j.configurationFile的方式手動指定log4j2配置文件。get

-Dlog4j.configurationFile=log4j2.xml

5 參考資料

相關文章
相關標籤/搜索