我的要求(为测试目的而定制的值):
因此,在14:00:03开始时,我应该有14:00:02的100个.log文件和14:00:01的100个.zip文件。
我尝试了param值和策略的各种组合,但未能实现这一点。当我使用这两个策略时,我会在超过1KB限制时获得.zip文件。以下是我的配置。请告诉我出错的地方:
<RollingFile name="RollingFile" fileName="logs/utility.log" filePattern="logs/utility-%d{yyyy-MM-dd-HH-mm}-%i.zip" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="1 KB" />
</Policies>
</RollingFile>
如果我将其修改为以下,我没有收到任何zip文件:
<RollingFile name="RollingFile" fileName="logs/utility.log" filePattern="logs/utility-%d{yyyy-MM-dd-HH-mm}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy>
<param name="FileNamePattern" value="logs/utility-%d{yyyy-MM-dd-HH-mm}-%i.zip" />
</TimeBasedTriggeringPolicy>
<SizeBasedTriggeringPolicy size="1 KB" />
</Policies>
</RollingFile>
答案 0 :(得分:0)
触发策略只是 - appender应该用来确定何时应该发生文件翻转的方法。如果文件模式以“正常”压缩文件扩展名结束,则每次翻转都会自动进行压缩。要更改该行为,您必须创建自定义操作以查找在前一分钟内创建的所有文件并压缩它们。
操作指定为
<RollingFile ...>
<DefaultRolloverStrategy>`
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/app-*.log.gz" />
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>