日志文件名不尊重指定的索引

时间:2015-03-12 11:02:54

标签: java log4j

我只是将我的log4j设置为按日期和索引大小命名的日志文件,下面的配置效果很好

log4j.rootLogger=TRACE,monAppender
log4j.appender.monAppender=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy  
log4j.appender.monAppender.RollingPolicy.MinIndex=1 
log4j.appender.monAppender.RollingPolicy.maxIndex=5
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.monAppender.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy  
# 5 Mo just for testing
log4j.appender.monAppender.TriggeringPolicy.MaxFileSize=5242880
log4j.appender.monAppender.RollingPolicy.fileNamePattern=D:/log/MyApp_log_%d{yyyy-MM-dd}_%i.log
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.monAppender.layout.ConversionPattern=|------->| [%-5p - SI] [%d{yyyy-MM-dd HH\:mm\:ss}]  [%m] %n

但生成的索引是随机的并且违反了上面提到的约束( minindex = 1,maxindex = 5 ),生成的文件命名如下:

enter image description here

我的问题是这个索引是如何生成的?如何初始化?如果这是不可能的,那么再次重新生成相同的索引会覆盖现有文件的风险!

使用的jar: log4j-1.2.17.jar,apache-log4j-extras-1.2.17.jar

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

您的配置错误:

log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy  
log4j.appender.monAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy

您无法为同一个appender指定两个不同的策略。第二行将覆盖第一行,将FixedWindowRollingPolicy替换为TimeBasedRollingPolicy。在TimeBasedRollingPolicy中,%i可能是自大纪元以来的秒数。

如果您想在文件名中添加索引和时间戳,则必须编写自己的策略。