log4j2 配置文件解讀


1、日志相關介紹

  日志接口(slf4j):slf4j是對所有日志框架制定的一種規范、標准、接口,並不是一個框架的具體的實現,因為接口並不能獨立使用,需要和具體的日志框架實現配合使用,比如log4j、logback等日志框架。常用的日志框架有log4j、logback、log4j2,log4j是apache實現的一個開源日志組件;logback同樣是由log4j的作者設計完成的,擁有更好的特性,用來取代log4j的一個日志框架,是slf4j的原生實現;log4j2是log4j 1.x和logback的改進版,據說采用了一些新技術(無鎖異步、等等),使得日志的吞吐量、性能比log4j 1.x提高很多,並解決了一些死鎖的bug,而且配置更加簡單靈活。以下以log4j2 xml配置文件為例。

2、log4j2.xml文件內容如下

<?xml version="1.0" encoding="utf-8"?>
<!-- log4j2內部日志配置,status表示日志級別,monitorInterval表示監控間隔 -->
<Configuration status="WARN" monitorInterval="10">
    <!-- 屬性配置,后續可以使用${xxx}獲取對應的值 -->
    <properties>
        <!-- 日志存放根目錄 -->
        <property name="LOG_HOME">logs</property>
        <!-- 文件名配置 -->
        <property name="FILE_NAME">adapter_service_log</property>
    </properties>
    <!-- 日志附加器配置 -->
    <Appenders>
        <!-- 控制台輸出配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台輸出格式結構配置 -->
            <!-- https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <!-- 日志訪問文件配置,filePattern表示壓縮日志文件的文件名的模式,.gz會自動壓縮 -->
        <RollingRandomAccessFile name="RollingFile"
            fileName="${LOG_HOME}/${FILE_NAME}.log"
            filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
            <!-- 日志文件格式配置 -->
            <PatternLayout
                pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            <!-- 策略配置 -->
            <Policies>
                <!-- 基於時間的觸發策略。該策略主要是完成周期性的log文件封存工作。有兩個參數:
                interval,integer型,指定兩次封存動作之間的時間間隔。單位:以日志的命名精度來確定單位,
                    比如yyyy-MM-dd-HH 單位為小時,yyyy-MM-dd-HH-mm 單位為分鍾
                modulate,boolean型,說明是否對封存時間進行調制。若modulate=true,
                    則封存時間將以0點為邊界進行偏移計算。比如,modulate=true,interval=4hours,
                    那么假設上次封存日志的時間為03:00,則下次封存日志的時間為04:00,
                    之后的封存時間依次為08:00,12:00,16:00-->
                <TimeBasedTriggeringPolicy interval="1"  modulate="true" />
                <!-- 基於日志大小的觸發策略,最大100MB-->
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <!-- 默認的文件大小處理策略,max表示filePattern配置的%i的最大值,即表示當天文件歸檔的最大數量 -->
            <DefaultRolloverStrategy max="30">
                <!-- 刪除處理策略,在配置的路徑中搜索,maxDepth表示往下搜索的最大深度 -->
                <Delete basePath="${LOG_HOME}/$${date:yyyy-MM}/" maxDepth="2">
                    <!-- 文件名搜索匹配,支持正則 -->
                    <IfFileName glob="*.log.gz" />
                    <!-- 最新修改時間超過7d則會被刪除 -->
                    <IfLastModified age="7d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </Appenders>
 
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

3、pattern格式

  • %c{參數} 或 %logger{參數} ##輸出日志名稱
  • %C{參數} 或 %class{參數 ##輸出類型
  • %d{參數}{時區te{參數}{時區} ##輸出時間
  • %F|%file ##輸出文件名
  • highlight{pattern}{style} ##高亮顯示
  • %l ##輸出錯誤的完整位置
  • %L ##輸出錯誤行號
  • %m 或 %msg 或 %message ##輸出錯誤信息
  • %M 或 %method ##輸出方法名
  • %n ##輸出換行符
  • %level{參數1}{參數2}{參數3} ##輸出日志的級別
  • %t 或 %thread ##創建logging事件的線程名

  pattern對齊修飾

  • %20 —— 右對齊,不足20個字符則在信息前面用空格補足,超過20個字符則保留原信息
  • %-20 —— 左對齊,不足20個字符則在信息后面用空格補足,超過20個字符則保留原信息
  • %.30 —— 如果信息超過30個字符,則只保留最后30個字符
  • %20.30 —— 右對齊,不足20個字符則在信息前面用空格補足,超過30個字符則只保留最后30個字符
  • %-20.30 —— 左對齊,不足20個字符則在信息后面用空格補足,超過30個字符則只保留最后30個字符

 

參考:

http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout


免責聲明!

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



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