1. 程式人生 > >IDEA整合日誌框架Log4j2+Slf4j詳細配置過程

IDEA整合日誌框架Log4j2+Slf4j詳細配置過程

info 信息 mon 文件路徑 留言 nbsp time 檢測 之間

日誌框架這麽多,他們之間到底是什麽關系呢?籠統的講就是slf4j是一系列的日誌接口,而log4j2、logback是具體實現了接口功能的日誌框架。現在的主流日誌接口都使用slf4j,而日誌的實現就見仁見智了,至於他們的關系請自行百度,此處選擇log4j2作為實現框架。網上看到的教程要麽對代碼沒有解釋,對新手不友好;要麽時間比較久遠,跟不上時代。這裏使用新版本並結合大量註釋,力求簡潔明了,有什麽問題歡迎留言交流。

運行環境:

  • log4j2 2.8.1 + slf4j 1.7.25
  • IntelliJ IDEA 2017.2.5
  • maven 3.0.5

配置過程

Step 1:導入maven依賴

    <properties>
        <slf4j.version>1.7.25</slf4j.version>
        <log4j.version>2.8.2</log4j.version>
    </properties>
     <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <
version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j.version}</version> </
dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>${log4j.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j.version}</version> </dependency>

Step 2:添加配置文件

配置文件可以直接在resources文件夾下創建,文件名為log4j2.xml,該文件夾是IDEA專門用來存放各種配置文件的地方,這樣就不需要指定配置文件的位置。如果想放在其他文件夾下,則需要在web.xml文件中添加如下配置:

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <!-- 日誌配置文件路徑,請根據具體項目自行調整 -->
        <param-value>classpath:conf/log4j2.xml</param-value>
    </context-param>    

我的配置文件log4j2.xml內容如下(此處並沒有將日誌信息輸出到外部文件)

<?xml version="1.0" encoding="utf-8"?>
<!--日誌級別:TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低於WARN的信息都不會輸出-->
<!--
    status : 這個用於設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,會看到log4j2內部各種詳細輸出
    monitorInterval : Log4j能夠自動檢測修改配置文件和重新配置本身, 設置間隔秒數。此處表示每隔300秒重讀一次配置文件
-->
<Configuration status="ERROR" monitorInterval="300">
    <!--<properties>-->
    <!--<property name="LOG_HOME">F:\logs</property>-->
    <!--<property name="ERROR_LOG_FILE_NAME">error</property>-->
    <!--</properties>-->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT"> <!-- 定義類型為Console的Appender -->
            <PatternLayout pattern="%d{HH:mm:ss} [%-5level] [%-10thread] %c{1} - %msg%n"/> <!-- 定義類型為Pattern的Layout -->
        </Console>
    </Appenders>
    <!--定義logger,只有定義了logger並引入上面的appender,appender才會生效-->
    <Loggers>
        <Root level="error"> <!-- 定義Root Logger -->
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定義的Console -->
        </Root>
        <!--定義名字為MainLogger的Logger,其日誌級別為info,info以下級別的信息將不會輸出 -->
        <Logger name="MainLogger" level="info" additivity="false">
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定義的Console -->
        </Logger>
    </Loggers>
</Configuration>

Step 3: 在Java文件中使用slf4j打印日誌信息:

此處註意Logger的名稱必須與配置文件中對應

@Controller
public class MainController {
    // 獲取log4j2.xml文件中定義的名為“MainLogger”的Logger
    // 如果沒有對應名稱的Logger,則無法使用Logger記錄和輸出日誌信息
    private static final Logger log = LoggerFactory.getLogger("MainLogger");

    @RequestMapping(value = "/test")
    public String test(){
        log.info("info...");
        log.debug("debug...");
        log.warn("warn...");
        log.error("error...");
        return "test";
    }
}

IDEA整合日誌框架Log4j2+Slf4j詳細配置過程