Remain 7 days log file with Log4j2. Please use the version above 2.16.0.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="FILE_PATH">/path/to/your/log/folder</Property>
<Property name="FILE_NAME">your-log-file-name</Property>
<Property name="PATTERN">{"host": "%host", "logger": "%logger", "level": "%level", "message": "[%thread] [%c:%L]
--- %message"}%n
</Property>s
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%file] [%thread] %n%level : %msg%n"/>
</Console>
<RollingRandomAccessFile name="HourLogFile" fileName="${FILE_PATH}/${FILE_NAME}-hour.log"
filePattern="${FILE_PATH}/${FILE_NAME}-hour.%d{yyy-MM-dd HH}.log">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!-- interval 属性用来指定多久滚动一次,默认是 1 hour-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<!-- 当文件达到设定阈值时,会滚动一次(保存为新文件) -->
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<!-- 该路径下最多能存放多少个文件,大于该数值后覆盖旧的文件,默认是 7 个 -->
<DefaultRolloverStrategy max="100">
<Delete basePath="${FILE_PATH}/" maxDepth="2">
<IfFileName glob="*.log"/>
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用 另外, 数字最好>2,
否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功! -->
<!-- 7天 = 168H -->
<IfLastModified age="168H"/>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<AsyncLogger name="org.springframework" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="HourLogFile"/>
</AsyncLogger>
<AsyncLogger name="org.apache.ibatis" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="HourLogFile"/>
</AsyncLogger>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="HourLogFile"/>
</Root>
</Loggers>
</Configuration>