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>

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

请帮助我发现任何错误。

注意:我包括了log4j2的beta9(这是最新的)

回答:

这里的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天),然后运行。然后,将最后一个文件重命名为10月29日(某个序列号).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保留在类路径中,则不会加载它。

以上是 log4j2中基于时间的触发策略 的全部内容, 来源链接: utcz.com/qa/404459.html

回到顶部