TimeBasedRollingPolicy的翻转逻辑是否正确?

时间:2014-04-04 09:12:01

标签: log4j rollingfileappender

文档说'如果文件名没有改变,则不会使用fileName模式字符串派生rollover'.fileName。

我有两点意见:

1)如果今天appender没有写入消息,那么即使已经过了触发时间,它也不会滚动文件(即我们有一个昨天修改过的日志文件)。

2)如果昨天的日志文件是0KB(意味着昨天没有在文件中写入日志)&今天appender有一些消息要写,然后它滚动0kb文件并将数据写入新创建的日志文件

我想讨论上述两种情况是否由 TimeBasedRollingPolicy 类正确实现,还是应该更改实现?

如果FileNamePattern设置为%d {dd-MM-yyyy},我的第一个场景的实现策略将是'然后在午夜文件中应该滚动,无论appender是否有数据要写,如果昨天的文件是非空的

如果是第二种情况如果昨天的文件是0kb则表示昨天没有记录任何消息,那么它应该将数据写入同一文件。因为滚动的主要目的是备份日志,如果文件为空是否值得滚动

将以下两个场景讨论中的log4j.properties文件配置作为参考

Sample log4j.properties 
####### Root Logger ########################################
log4j.rootLogger=ERROR,CA,FA

############################################################
################### APPENDERS ##############################
############################################################
# CA is set to be a ConsoleAppender  
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d %p %t %c: %m%n

# FA is set to be a FileAppender 
log4j.appender.FA=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.FA.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.FA.RollingPolicy.FileNamePattern=.\\logs\\application.log-%d{dd-MM-yyyy}
log4j.appender.FA.File=.\\logs\\application.log
log4j.appender.FA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.FA.layout.ConversionPattern=%d %p %t %c: %m%n
log4j.appender.FA.Append=true

0 个答案:

没有答案