log4j2 中基于时间的触发策略

新手上路,请多包涵

我试图每小时创建一个新的日志文件。我在 RollingFileAppender 中使用 lo4j2 的 TimeBasedTriggerringPolicy。下面是我从 log4j2 官方网站获取的示例 xml 配置代码。

 <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
   <Appenders>
      <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
         <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
         </PatternLayout>
         <Policies>
            **
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            **
            <SizeBasedTriggeringPolicy size="250 MB" />
         </Policies>
      </RollingFile>
   </Appenders>
   <Loggers>
      <Root level="error">
         <AppenderRef ref="RollingFile" />
      </Root>
   </Loggers>
</Configuration>

在 interval 属性中,我设置了 1 表示 1 小时。但我的文件仍然不会每 1 小时滚动一次。

请帮我找出任何错误。

注意:我已经包含了 log4j2 的 beta9(这是最新的)

原文由 user1890780 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

这里的 1 表示 1 天而不是 1 小时。我已经使用以下配置手动测试。

 <RollingFile name="T" fileName="/data_test/log/abc.log"
        filePattern="/data_test/log/abc-%d{MM-dd-yyyy}-%i.log">
        <PatternLayout>
            <Pattern>%d{ISO8601} %-5p [%t] (%F:%L) - %m%n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <SizeBasedTriggeringPolicy size="100 KB" />
        </Policies>
    </RollingFile>

对于手动测试,我更改了系统日期和时间。首先,尝试增加 1 小时。将生成日志文件,但不会按预期生成。然后更改系统日期,增加1天,然后查看结果。

假设 10 月 29 日的最后一个日志文件 (abc.log) 为 50 KB。配置大小为 100 KB。如果我们更改日期(增加 1 天)然后运行。然后,最后一个文件将重命名为 29-Oct-(一些序列号).log(复制后的 50 KB 文件),新文件将使用 abc.log 创建

我已经在 web.xml 中使用具有以下配置的简单 servlet 进行了尝试

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>log4j2.xml</param-value>
</context-param>

将 log4j2.xml 保存在 src 文件夹中。如果我们将其保存在类路径中,则不会加载 log4j2.xml。

原文由 Zubin Shah 发布,翻译遵循 CC BY-SA 3.0 许可协议

Log4j 文档

interval -> (integer) 根据日期模式中最具体的时间单位,翻转应该发生的频率。例如,使用以小时作为最具体项目的日期模式,并且每 4 小时将发生 4 次翻转的增量。默认值为 1。

如果您想每小时创建一次,您应该更改文件名模式。

原文由 Amin Sh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题