我有一个 log4j2.xml,其中一个 appender 如下所示:
<RollingFile name="performance"
filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
append="true">
<Policies>
<CronTriggeringPolicy schedule="0 * * * * ?" evaluateOnStartup="true"/>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
</RollingFile>
所以我的想法是让 crontrigger 策略每天创建一个新的日志文件,但也设置为当文件大小达到 500 MB 时在当天滚动。
但它会导致每分钟创建一个日志文件,例如
myapp.2018-05-10.1.perf.log
myapp.2018-05-10.2.perf.log
...
myapp.2018-05-10.121.perf.log
不确定,我在这里缺少什么。非常感谢任何帮助/建议。
最佳答案
你的 cron 表达式是错误的。
<RollingFile name="performance"
filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
append="true">
<Policies>
<CronTriggeringPolicy schedule="0 0 12 1/1 * ? *" evaluateOnStartup="true"/>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
</RollingFile>
这是正确的做法
<RollingFile name="performance"
filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
append="true">
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="500 MB" />
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
由于文件名使用的模式“app.%d{MM-dd-yyyy}.%i.log.gz”,appender 能够理解我们指的是什么时间间隔,这隐含地设置每天滚动并压缩滚动文件。
关于java - log4j2 SizeBasedTriggeringPolicy 每分钟创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280860/