在Log4j基于时间的触发策略中,调制是什么意思
在下例中,每天都会创建一个日志文件。考虑到这个例子,您能提供一个场景来说明在间隔设置为1的情况下modate=‘true’的用法吗?
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd-HH}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interal = 1 modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
解决方案
在Log4j初始化时,它将根据%d模式计算翻转间隔。当MODULATE为FALSE时,将根据应用程序启动的时间进行翻转。因此,如果应用程序在下午1:41启动,并且最小的时间间隔是该小时,则下一次滚动将发生在下午2:41如果MODULATE为TRUE,则将在&Q;EVEN&Q;边界上进行滚动,因此下一次滚动将在下午3点进行。
btw-示例中的XML无效。它应该是
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
相关文章