在Log4j基于时间的触发策略中,调制是什么意思

2022-04-12 00:00:00 java log4j log4j2
在下例中,每天都会创建一个日志文件。考虑到这个例子,您能提供一个场景来说明在间隔设置为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"/>

相关文章