<?xml version="1.0" encoding="UTF-8"?>
<!--status 级别 status的值有 “trace”, “debug”, “info”, “warn”, “error” and “fatal”;monitorInterval 监控间隔时间读取-->
<configuration status="DEBUG" monitorInterval="60">
<Properties> <!--Properties 定义常量-->
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS}|%p|%c|%L|%m%n</Property>
<Property name="logPath">logs</Property>
</Properties>
<Appenders> <!--Appenders 输出源,定义日志输出-->
<!--设置在控制台打印日志-->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<!--设置级别为 DEBUG 日志输出到 debug.log 中-->
<!--immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。-->
<!--无论是 RollingRandomAccessFile 或 RollingFile,必须配置一个Policy-->
<RollingRandomAccessFile name="debug"
immediateFlush="false"
fileName="${logPath}/debug.log"
filePattern="${logPath}/debug-%d{yyyy-MM-dd}.log">
<Filters> <!--Filters决定日志事件能否被输出。过滤条件有三个值:ACCEPT(接受),DENY(拒绝),NEUTRAL(中立)-->
<!--设置只输出级别为 debug 的日志-->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<!--如果是info以上级别的日志输出 拒绝-->
<ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="${pattern}" charset="UTF-8"/> <!--PatternLayout 用于指定输出日志的格式-->
<!--Policy是用来控制日志文件何时(When)进行滚动的;Strategy是用来控制日志文件如何(How)进行滚动的-->
<!--如果配置的是RollingFile或RollingRandomAccessFile,则必须配置一个Policy-->
<Policies>
<!--根据当前filePattern配置,日志文件每5分钟滚动一次-->
<!--满足其中一个条件就能触发-->
<TimeBasedTriggeringPolicy modulate="true" interval="5"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<!-- 最多保存日志文件的数目 -->
<DefaultRolloverStrategy max="60"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="info"
immediateFlush="false"
fileName="${logPath}/info.log"
filePattern="${logPath}/info-%d{yyyy-MM-dd}.log">
<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
</Policies>
<DefaultRolloverStrategy max="60"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="warn"
immediateFlush="false"
fileName="${logPath}/warn.log"
filePattern="${logPath}/warn-%d{yyyy-MM-dd}.log">
<Filters>
<ThresholdFilter level="WARN"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
</Policies>
<DefaultRolloverStrategy max="60"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="error"
immediateFlush="false"
fileName="${logPath}/error.log"
filePattern="${logPath}/error-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="${pattern}"/>
<Filters>
<ThresholdFilter level="ERROR"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
</Policies>
<DefaultRolloverStrategy max="60"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="org.example" level="DEBUG" additivity="true">
<AppenderRef ref="debug"/>
<AppenderRef ref="info"/>
<AppenderRef ref="warn"/>
<AppenderRef ref="error"/>
</Logger>
<!-- org.springframework 只输出 DEBUG 级别以上的日志 -->
<Logger name="org.springframework" level="DEBUG"/>
<!-- org.apache 只输出 DEBUG 级别以上的日志 -->
<Logger name="org.apache" level="DEBUG"/>
<!-- Root 一定要有,否则 AppenderRef 失效-->
<Root level="DEBUG">
<AppenderRef ref="console"/>
<AppenderRef ref="debug"/>
<AppenderRef ref="info"/>
<AppenderRef ref="warn"/>
<AppenderRef ref="error"/>
</Root>
</Loggers>
</configuration>
log4j2配置文件说明与记录
于 2023-01-06 18:58:13 首次发布