文档说'如果文件名没有改变,则不会使用fileName模式字符串派生rollover'.fileName。
我有两点意见:
1)如果今天appender没有写入消息,那么即使已经过了触发时间,它也不会滚动文件(即我们有一个昨天修改过的日志文件)。
2)如果昨天的日志文件是0KB(意味着昨天没有在文件中写入日志)&今天appender有一些消息要写,然后它滚动0kb文件并将数据写入新创建的日志文件
我想讨论上述两种情况是否由 TimeBasedRollingPolicy 类正确实现,还是应该更改实现?
如果FileNamePattern设置为%d {dd-MM-yyyy},我的第一个场景的实现策略将是'然后在午夜文件中应该滚动,无论appender是否有数据要写,如果昨天的文件是非空的
如果是第二种情况如果昨天的文件是0kb则表示昨天没有记录任何消息,那么它应该将数据写入同一文件。因为滚动的主要目的是备份日志,如果文件为空是否值得滚动?
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