log4j2-2.13.0版本安裝


一、log4j2介紹

  • 暫略

二、log4j2安裝

  • 測試工程結構

pom.xml 添加log4j2所需jar包依賴

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.0</version>
        </dependency>

log4j2.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<!--
    status屬性:查看log4j的裝配過程,值為OFF表示關閉,值為debug等日志級別為查看日志創建過程(正常情況下只有debug和trace級別日志顯示)
    monitorInterval : 配置文件更改后重新加載,不用重啟應用,單位秒
-->
<configuration status="error">
    <!--全局屬性聲明,方便后面使用${屬性名稱} 進行引用-->
    <properties>
        <!-- /代表的是盤符根目錄, 還有諸如 .代表當前當前項目路徑 ,我們也可以使用@ 名稱@從pom.xml中動態獲取這些值 -->
        <property name="LOG_HOME">logs</property>
        <property name="DEBUG_FILE_NAME">debug</property>
        <property name="ERROR_FILE_NAME">error</property>
    </properties>

    <!--先定義所有的appender -->
    <appenders>
        <!--這個輸出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--
            控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)
            ThresholdFilter:指定追加器過濾日志的級別
            level:設定級別
            onmatch:匹配符合條件的日志輸出
            onMismatch:拒絕不符合條件
        -->

            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--    輸出日志的格式 -->
            <PatternLayout pattern="[name] %d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>

        </Console>

        <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,false適合臨時測試用
        append為TRUE表示消息增加到指定文件中,false表示消息覆蓋指定的文件內容,默認值是true -->
        <File name="log" fileName="${LOG_HOME}/log4j2.log" append="false">
            <PatternLayout pattern="[name] %d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <!--<PatternLayout pattern="[log4j2_test]  %-d{yyyy-MM-dd HH-mm-ss.SSS} [%-5p] %C:%L  %m%n"/>-->

        </File>

        <!--添加過濾器ThresholdFilter,可以有選擇的輸出某個級別以上的類別  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否則直接拒絕  -->
        <File name="ERROR" fileName="${LOG_HOME}/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[name] %d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔 -->
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/web.log"
                     filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
            <!--
            間隔時間備份策略
            modulate為true表示以0點為邊界進行時間偏移計算,
            例:每隔4個小時進行日志封存,當前時間為3點,那么1個小時后進行一次日志封存(將之前的日志放置到filePattern指定的封存位置)
            interval:間隔時間(其單位有filePattern中-dd HH%d{yyyy-MM}的最小單位來決定,)
            -->
            <TimeBasedTriggeringPolicy modulate="true" interval="12"/>
            <PatternLayout pattern="[name] %d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="5MB"/>
        </RollingFile>
        <!--&lt;!&ndash;-->
        <!--以大小為策略進行日志封存,%i用於記錄封存文件的生成先后順序(),.zip/.gz等指定壓縮格式-->
        <!--immediateFlush:log4j2接收到日志事件時,是否立即將日志刷到磁盤。默認為true。-->
        <!--&ndash;&gt;-->
        <!--<RollingFile name="sizedRollFile" fileName="${LOG_HOME}/sizerollfile.log" immediateFlush="true"-->
        <!--filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/sizerollfile-%d{yyyy-MM-dd HH}-%i.log.zip">-->
        <!--<PatternLayout pattern="[log4j2-demo] %-d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c:%L %m%n"/>-->
        <!--&lt;!&ndash; 當有多個策略時,使用Policies 標簽&ndash;&gt;-->
        <!--<Policies>-->
        <!--<TimeBasedTriggeringPolicy />-->
        <!--&lt;!&ndash;基於大小的觸發策略,size指定大小&ndash;&gt;-->
        <!--<SizeBasedTriggeringPolicy size="10 kB"/>-->
        <!--</Policies>-->
        <!--<Filters>-->
        <!--<thresholdFilter level="debug" onmatch="ACCEPT" onMismatch="DENY"/>-->
        <!--</Filters>-->
        <!--&lt;!&ndash;-->
        <!--控制生成的封存文件數量的一種策略,max控制filePattern 中的%i ,不指定默認為7,-->
        <!--(就是你只能看見7個封存的文件,多余的你可以理解為覆蓋掉了)-->
        <!--這雖然也是一種策略,但是放置在策略標簽之外-->
        <!--&ndash;&gt;-->
        <!--<DefaultRolloverStrategy max="20" />-->
        <!--</RollingFile>-->

    </appenders>
    <!--定義logger,只有定義了logger並引入的appender,appender才會生效 -->
    <loggers>
        <root level="trace">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="ERROR"/>
            <appender-ref ref="log"/>
        </root>
    </loggers>
</configuration>

log4j2測試類


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class log4j2Test {

    private static final Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    public static void main(String[] args) {
        for(int i=0;i<3;i++){
            // 記錄trace級別的信息
            logger.trace("log4j2 trace日志輸出:This is trace message.");
            // 記錄debug級別的信息
            logger.debug("log4j2 debug日志輸出:This is debug message.");
            // 記錄info級別的信息
            logger.info("log4j2 info日志輸出:This is info message.");
            // 記錄warn級別的信息
            logger.warn("log4j2 warn日志輸出:This is warn message.");
            // 記錄error級別的信息
            logger.error("log4j2 error日志輸出:This is error message.");
            // 記錄fatal級別的信息
            logger.fatal("log4j2 fatal日志輸出:This is fatal message.");
        }
    }
}
  • 測試類結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM