当前位置: 首页 > 面试题库 >

log4j2中基于时间的触发策略

温源
2023-03-14
问题内容

我试图每小时创建一个新的日志文件。我在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保留在类路径中,则不会加载它。



 类似资料:
  • 我正在尝试创建每小时的新日志文件。我正在RollingFileAppender中使用lo4j2的TimeBasedTriggerringPolicy。下面是我从log4j2官方站点获取的示例xml配置代码。 在interval属性中,我设置了1表示1小时。但我的文件并不是每隔1小时滚动一次。

  • 问题内容: 我想定期执行一个程序,如何在MySQL中做到这一点? 问题答案: 如果您拥有MySQL 5.1,则可以使用事件。 http://dev.mysql.com/doc/refman/5.1/zh- CN/events.html

  • 就像Hazelcast在Listener上有基于时间的驱逐一样,Apache的Ignite缓存中是否有这样的策略。 我试过了, 但这是缓存级逐出,我需要入门级逐出状态。 你能给我提些政策或其他建议吗。

  • 当特定时间过去后,如何在Flink中设置触发器以执行某些操作?每天下午1点的流量总和

  • 我已经在我的网站上设置了GTM,我有一个在以下条件下触发的触发器 触发器的GTM条件 当我测试标签时,它不会启动。我检查了元素的值为 那么,当我使用regex或contains操作符时,为什么GTM不起作用呢。还有其他人面临过这个问题吗? 此页上几乎没有触发器(https://luminaryproperties.co.uk/venturing-into-your-first-off-plan/?

  • 我正在使用应用服务计划进行 azure 函数,并添加了 blob 触发器,但是当任何文件上传到 blob 容器时,函数没有触发.或者有时它花了太多时间,然后在它开始触发之后。任何建议将不胜感激 它应该在新文件上传到 Blob 容器时触发该函数。