我尝试将log4j2 SizeBasedTriggeringPolicy与CronTriggeringPolicy结合使用,以便像这样在午夜或每20MB(每分钟或每100KB用于测试)滚动文件(请参见TriggeringPolicies):
<RollingFile name="RollingFile"
filePattern="target/logs/foobar-%d{yyyyMMdd-HHmmss}{UTC}.log">
<Layout type="PatternLayout" pattern="%date{DEFAULT} | %message%n" />
<Policies>
<SizeBasedTriggeringPolicy size="100KB" />
<CronTriggeringPolicy schedule="0 * * * * ? *" evaluateOnStartup="true" />
</Policies>
</RollingFile>
不幸的是,只有CronTriggeringPolicy可以在此组合中使用。达到文件大小限制时,不会进行任何翻转。 从配置中删除“ CronTriggeringPolicy”将使翻转每100KB发生一次。
请注意我不能使用TimeBasedTriggeringPolicy的事实,因为我需要在文件名模式中输入第二个准确的日期,但我想每天滚动一次(或在此处进行测试的每一分钟)。
使用CronTriggeringPolicy时,这是(无法将CronTriggeringPolicy与其他策略结合使用的)已知错误或限制吗?
我提供了一个正在运行的示例项目。 https://github.com/FrVaBe/logging
只需运行Main类并监视target/logs
中生成的文件。在此项目的设置中,它们每30秒滚动一次,但是当达到100KB大小时它们应该已经旋转了(在我的计算机上不会持续30秒)。