<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参数
charset ##指定字符集
pattern ##指定格式
alwaysWriteExceptions ##默认为true,输出异常
header ##可选项。包含在每个日志文件的顶部
footer ##可选项。包含在每个日志文件的尾部。
RollingRandomAccessFile基本属性
name:Appender名称
immediateFlush:log4j2接收到日志事件时,是否立即将日志刷到磁盘。默认为true。
fileName:日志存储路径
filePattern:历史日志封存路径。其中%d{yyyyMMddHH}表示了封存历史日志的时间单位(目前单位为小时,yyyy表示年,MM表示月,dd表示天,HH表示小时,mm表示分钟,ss表示秒,SS表示毫秒)。注意后缀,log4j2自动识别zip等后缀,表示历史日志需要压缩。
SizeBasedTriggeringPolicy的功能:
观察当前活动文件的大小
当已经大于了指定的值,它会给 RollingFileAppender 发一个信号触发对当前活动文件的轮转
DefaultRolloverStrategy指定了当触发rollover时的默认策略。
max参数指定了计数器的最大值。一旦计数器达到了最大值,过旧的文件将被删除。
Delete属性
(Delete标签是从Log4j 2.7版本开始引入的,注意它可以删除任何文件,而不仅仅是删除日志文件)
basePath :它删除指定目录下的文件
maxDepth:最大子目录深度
IfFileName:删除指定文件名的文件
IfLastModified:删除某个日期前的文件(单位有S:秒,M:分钟,H:小时,D:天,W:周)