log4j2怎么压缩历史日志,今天的不压缩,压缩昨天的

log4j2怎么压缩历史日志,今天的不压缩,压缩昨天的日志?

RollingFile:使用文件方式记录日志

  • fileName:记录日志的文件
  • filePattern:当日志记录文件超过指定大小时,以指定的文件格式生成新的文件

SizeBasedTriggeringPolicy

  • size:指定每个日志文件大小,如果超过该大小,则生成新的日志文件

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

  • age : 指定超过多久之后就删除旧文件,如30d,保留近30天的文件,这个d一定要和filePattern中指定的规则一致,也就是filePattern是以天为单位,这里也要以天为单位
<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>  

可以写一个压缩小工具,每天定时压缩制定文件