什么决定log4j TimeBasedRollingPolicy何时翻转?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么决定log4j TimeBasedRollingPolicy何时翻转?相关的知识,希望对你有一定的参考价值。
我正在从Log4J Extras中设置一个TimeBasedRollingPolicy
,我不清楚是什么告诉政策什么时候翻身。 The API不明确,所以我只是在做推论。这听起来像是FileNamePattern
中决定频率的最后一个元素。
以log4j Wiki为例:
<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
<!-- The active file to log to -->
<param name="file" value="/applogs/myportal/portal.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<!-- The file to roll to, this is a fairly intelligent parameter, if the file
ends in .gz, it gzips it, based on the date stamp it rolls at that time,
default is yyyy-MM-dd, (rolls at midnight)
-->
<param name="FileNamePattern" value="/applogs/myportal/portal.%d.log.gz" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
</layout>
</appender>
我是否可以假设,因为模式以dd
结束,策略是在变化时滚动?与API中的示例相同,yyyy-MM
的模式意味着文件应该在MM
更改时滚动?
谢谢!
保罗
好吧,我必须仔细检查,但是我会说每当通过格式化格式字符串的当前日期生成的字符串发生变化时,文件就会被滚动。这意味着:如果使用“yyyy-MM-dd”格式化日期,结果将每天更改。这也会发生在“dd”中,但是你每个月都会得到相同的文件名,因此文件被覆盖,被追加或滚动失败,因为文件已经存在(不确定哪个是真的,取决于什么appender确实如此,我想在这种情况下会附加日志,除了gzip方式之外)。
编辑:
示例:如果您有mylog.%d{dd}.log
,则今天生成的日志文件(2011-03-27)具有名称mylog.25.log
(由于在记录时格式化新的Date())并将消息附加到该文件。明天,现在使用的文件名为mylog.26.log
。 4月25日你再次获得文件名`mylog.25.log,因此那天的所有日志都将附加到已经包含3月25日日志的文件中。
我得到了这个工作。下面是log4j的代码。您只需要在pom.xml中添加log4j-extras依赖项并使用下面的代码:以下代码每分钟滚动一次并创建.zip文件。
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/opt/app/srdotcom/logs/portal.%d{yyyy-MM-dd-HH-mm}.log.zip" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{YYYY-MM-dd HH:mm:ss:SSS z}| %c{2}| %m%n" />
</layout>
Maven依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.2.17</version>
</dependency>
以上是关于什么决定log4j TimeBasedRollingPolicy何时翻转?的主要内容,如果未能解决你的问题,请参考以下文章
log4j 写入控制台但不写入文件(Liferay + Tomcat)