Remain 7 days log file with Log4j2. Please use the version above 2.16.0.

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <Configuration>
    3. <Properties>
    4. <Property name="FILE_PATH">/path/to/your/log/folder</Property>
    5. <Property name="FILE_NAME">your-log-file-name</Property>
    6. <Property name="PATTERN">{"host": "%host", "logger": "%logger", "level": "%level", "message": "[%thread] [%c:%L]
    7. --- %message"}%n
    8. </Property>s
    9. </Properties>
    10. <Appenders>
    11. <Console name="Console" target="SYSTEM_OUT">
    12. <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%file] [%thread] %n%level : %msg%n"/>
    13. </Console>
    14. <RollingRandomAccessFile name="HourLogFile" fileName="${FILE_PATH}/${FILE_NAME}-hour.log"
    15. filePattern="${FILE_PATH}/${FILE_NAME}-hour.%d{yyy-MM-dd HH}.log">
    16. <PatternLayout pattern="${LOG_PATTERN}"/>
    17. <Policies>
    18. <!-- interval 属性用来指定多久滚动一次,默认是 1 hour-->
    19. <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
    20. <!-- 当文件达到设定阈值时,会滚动一次(保存为新文件) -->
    21. <SizeBasedTriggeringPolicy size="100MB"/>
    22. </Policies>
    23. <!-- 该路径下最多能存放多少个文件,大于该数值后覆盖旧的文件,默认是 7 个 -->
    24. <DefaultRolloverStrategy max="100">
    25. <Delete basePath="${FILE_PATH}/" maxDepth="2">
    26. <IfFileName glob="*.log"/>
    27. <!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用 另外, 数字最好>2,
    28. 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功! -->
    29. <!-- 7天 = 168H -->
    30. <IfLastModified age="168H"/>
    31. </Delete>
    32. </DefaultRolloverStrategy>
    33. </RollingRandomAccessFile>
    34. </Appenders>
    35. <Loggers>
    36. <AsyncLogger name="org.springframework" level="DEBUG" additivity="false">
    37. <AppenderRef ref="Console"/>
    38. <AppenderRef ref="HourLogFile"/>
    39. </AsyncLogger>
    40. <AsyncLogger name="org.apache.ibatis" level="DEBUG" additivity="false">
    41. <AppenderRef ref="Console"/>
    42. <AppenderRef ref="HourLogFile"/>
    43. </AsyncLogger>
    44. <Root level="INFO">
    45. <AppenderRef ref="Console"/>
    46. <AppenderRef ref="HourLogFile"/>
    47. </Root>
    48. </Loggers>
    49. </Configuration>