log4j2中基于时间的触发策略

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

     %d %p %c{1.} [%t] %m%n   **  **           

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

请帮我发现任何错误。

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

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

   %d{ISO8601} %-5p [%t] (%F:%L) - %m%n       

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

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

我在web.xml中使用以下配置的简单servlet尝试了这个

  log4jConfiguration log4j2.xml  

将log4j2.xml保存在src文件夹中。 如果我们将它保存在classpath中,则不会加载log4j2.xml。

正如Abid所提到的,间隔值在模式的上下文中解释,该模式被指定为filePattern的一部分。 它从最低面额开始。 例如,如果pattern包含S,则频率将以毫秒为单位。 它支持日期模式,详细描述为SimpleDateFormat java doc http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html的一部分。

你有一个非空的日志文件(否则什么都没有翻转)?

请注意,即使名称为“TimeBased …”,它也不会在指定时间实际翻转,而是在超过时间阈值后到达的第一个日志事件。 你可以尝试一个小的测试程序,在61分钟左右后记录一些东西,看看问题是否仍然存在?

如果它没有通过上述测试程序翻转,您可能发现了一个错误。 在这种情况下,请在log4j问题跟踪器上提出它。 (务必附上团队可用于重现问题的测试程序)。

Log4j 文档 :

interval – >(integer)根据日期模式中最具体的时间单位进行翻转的频率。 例如,使用以小时为最特定项目的日期模式,并且每4小时将增加4次翻转。 默认值为1。

如果要每小时创建一次,则应更改文件名模式。