<Console name="Console" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="%highlight{%d [%thread] [%X{traceId}] [%-5p]%c{1} (%L) %m%n}{FATAL=Bright Red, ERROR=Bright Magenta, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White}" />
</Console>
<RollingRandomAccessFile name="InfoLog" append="true" fileName="${logdir}/info.log" filePattern="${logdir}/info.%d{yyyy-MM-dd}.log.%i">
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout charset="UTF-8">
<Pattern>%d [%thread] [%X{traceId}] [%-5p]%C{1}(%L) %m{nolookups}%xThrowable{separator(|)}%n</Pattern>
</PatternLayout>
<SizeBasedTriggeringPolicy size="200MB" />
<DefaultRolloverStrategy max="50">
<Delete basePath="${logdir}" maxDepth="2">
<IfFileName glob="*.log"/>
<IfLastModified age="3D"/>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
PatternLayout參數(shù)
charset ##指定字符集
pattern ##指定格式
alwaysWriteExceptions ##默認(rèn)為true,輸出異常
header ##可選項(xiàng)。包含在每個(gè)日志文件的頂部
footer ##可選項(xiàng)。包含在每個(gè)日志文件的尾部。
RollingRandomAccessFile基本屬性
name:Appender名稱
immediateFlush:log4j2接收到日志事件時(shí),是否立即將日志刷到磁盤。默認(rèn)為true。
fileName:日志存儲(chǔ)路徑
filePattern:歷史日志封存路徑。其中%d{yyyyMMddHH}表示了封存歷史日志的時(shí)間單位(目前單位為小時(shí),yyyy表示年,MM表示月,dd表示天,HH表示小時(shí),mm表示分鐘,ss表示秒,SS表示毫秒)。注意后綴,log4j2自動(dòng)識(shí)別zip等后綴,表示歷史日志需要壓縮。
SizeBasedTriggeringPolicy的功能:
觀察當(dāng)前活動(dòng)文件的大小
當(dāng)已經(jīng)大于了指定的值,它會(huì)給 RollingFileAppender 發(fā)一個(gè)信號(hào)觸發(fā)對(duì)當(dāng)前活動(dòng)文件的輪轉(zhuǎn)
DefaultRolloverStrategy指定了當(dāng)觸發(fā)rollover時(shí)的默認(rèn)策略。
max參數(shù)指定了計(jì)數(shù)器的最大值。一旦計(jì)數(shù)器達(dá)到了最大值,過(guò)舊的文件將被刪除。
Delete屬性
(Delete標(biāo)簽是從Log4j 2.7版本開始引入的,注意它可以刪除任何文件,而不僅僅是刪除日志文件)
basePath :它刪除指定目錄下的文件
maxDepth:最大子目錄深度
IfFileName:刪除指定文件名的文件
IfLastModified:刪除某個(gè)日期前的文件(單位有S:秒,M:分鐘,H:小時(shí),D:天,W:周)