log4j2的簡介及基礎配置
阿新 • • 發佈:2018-12-27
資源連結
log4j2的官網地址
log4j2的API
碼雲原始碼
log4j2的簡介
Log4j使用如下圖所示的類。
使用Log4j 2 API的應用程式將請求日誌管理器中帶有特定名稱的日誌記錄器。LogManager將定位適當的日誌上下文,然後從它獲得日誌記錄器。這使得新的Log4j 2.0版本有了大幅的效能提升、新的外掛系統,以及配置設定方面的很多改善。Log4j 1.x 在高併發情況下出現死鎖導致cpu使用率異常飆升,而Log4j2.0基於LMAX Disruptor的非同步日誌在多執行緒環境下效能會遠遠優於Log4j 1.x和logback。
Log4j的使用
新增pom依賴
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.10.0</version>
</dependency >
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency >
新增log4j2.xml配置檔案
注意了,這裡是log4j2.xml而不是log4j.xml,這也是log4j2在配置檔案方面與log4j最不同的地方,兩者不能混淆,否則會報出找不到配置檔案的問題。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
</Console>
<!--
fileName:指定日誌的所在位置以及日誌名稱
filePattern:指定備份的日誌所在位置以及名稱
-->
<RollingFile name="RollingFile" fileName="F:/logs/log4j2-xml.log" filePattern="F:/logs/log4j2-xml-$${date:yyyy-MM}/log4j2-xml-%d{yyyy-MM-dd}-%i.log.gz">
<!--輸出的日誌資料格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
<!--設定日誌檔案大小,當超過5M時,觸發日誌備份操作-->
<SizeBasedTriggeringPolicy size="5 MB" />
</RollingFile>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFile"/>
</root>
</loggers>
</configuration>
配置檔案中詳細的標籤我已經在程式碼備註上填寫完整了,所以說這裡就直接略過。
新增Log4j2Test測試程式碼
package com.lyc.log4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;
public class Log4j2Test {
private static final Logger log = LogManager.getLogger(Log4j2Test.class);
@Test
public void test(){
for(int i = 0;i < 200000;i ++){
log.info("這裡是在控制檯中輸出的資訊。");
}
}
}
執行結果
上述程式碼的意思是log4j2在執行程式碼時將日誌資訊記錄在log4j2-xml.log日誌檔案中,這裡我在測試程式碼中特意執行了200000次,目的就是為了讓其生成比較大的日誌檔案,在log4j2.xml的配置檔案中,我們已經將其日誌檔案的最大上限通過SizeBasedTriggeringPolicy標籤限制在了5M,這樣,多餘的日誌資訊就會被記錄到相應的壓縮包中,該壓縮包的所在位置以及檔名稱由RollingFile標籤中的filePattern屬性所作出規定,所以說執行後的結果如下所示: