ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – log4j2中基于时间的触发策略

2019-10-04 12:11:27  阅读:310  来源: 互联网

标签:java logging log4j log4j2 configuration


我试图每小时创建新的日志文件.我在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(这是最新的)

解决方法:

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天,然后查看结果.

假设第29天至10月的最后一个日志文件(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文件夹中.如果我们将它保存在classpath中,则不会加载log4j2.xml.

标签:java,logging,log4j,log4j2,configuration
来源: https://codeday.me/bug/20191004/1852956.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有