log4j2怎么压缩历史日志,今天的不压缩,压缩昨天的日志?
RollingFile:使用文件方式记录日志
SizeBasedTriggeringPolicy
DefaultRolloverStrategy
- max 指定相同规则文件最多保留多少个,如果规则是root-%d{yyyy-MM-dd}-%i.log,那么此时是以天为单位记录,会依次生成root-2022-05-07-1.log,
root-2022-05-07-2.log,root-2022-05-07-3.log,…,如果同一天内的文件数量超过了max指定的数量,则会进行覆盖,不会继续创建新的.
Delete IfLastModified
<RollingFile name="MyFile" fileName="./apps/logs/${filename}"
filePattern="${LOG_HOME}/root-%d{yyyy-MM-dd}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{1.} - %msg%throwable{short}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="30">
<Delete basePath="${LOG_HOME}/" maxDepth="2">
<IfFileName glob="*.log" />
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
如有帮助,请采纳,十分感谢!
日志是根据配置的日志文件大小来决定是否压缩的,确定下日志文件的大小是否超过的设置的阈值
<RollingFile name="RollingFile" fileName="${sys:catalina.home}/logs/logdemo_web.log"
filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/logdemo_web-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!-- 设置日志文件大小超过多少后开始进行压缩 单位:KB/MB/GB -->
<SizeBasedTriggeringPolicy size="10MB"/>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,超过后则会覆盖之前的,这里设置了20 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
可以写一个压缩小工具,每天定时压缩制定文件