如何根据大小限制log4j文件(仅限)?
我想将log4j配置为只写入最大指定大小的文件,例如5MB。当日志文件达到5MB时,我希望它开始写入新文件。我想在日志文件名中添加一些有意义的时间戳,以区分一个文件和下一个文件 在编写新文件时,我不需要它以任何方式重命名或操作旧文件(压缩将是一个福音,但不是必须的) 我绝对不希望它在一段时间或一定数量的滚动文件后开始删除旧文件 N MB日志文件的时间戳块似乎是我能想象到的绝对基本的最小简单策略。它是如此的基本,以至于我几乎不相信它不是现成的,但我一直无法想出如何做到这一点 特别是,我已经尝试了所有的如何根据大小限制log4j文件(仅限)?,log4j,rollingfileappender,fileappender,Log4j,Rollingfileappender,Fileappender,我想将log4j配置为只写入最大指定大小的文件,例如5MB。当日志文件达到5MB时,我希望它开始写入新文件。我想在日志文件名中添加一些有意义的时间戳,以区分一个文件和下一个文件 在编写新文件时,我不需要它以任何方式重命名或操作旧文件(压缩将是一个福音,但不是必须的) 我绝对不希望它在一段时间或一定数量的滚动文件后开始删除旧文件 N MB日志文件的时间戳块似乎是我能想象到的绝对基本的最小简单策略。它是如此的基本,以至于我几乎不相信它不是现成的,但我一直无法想出如何做到这一点 特别是,我已经尝试了所
dailrollingfileappender
,RollingFileAppender
或'Extras'RollingFileAppender
的化身。所有这些都会在超过备份数量时删除旧文件。我不想要这个,我想要我所有的日志文件
from Extras不适用,因为它没有“最大文件大小”选项,并且您无法关联辅助SizeBadeTriggeringPolicy
(因为它已经实现了TriggeringPolicy
)
有现成的解决方案吗?最好是在maven central?我放弃了让它开箱即用的尝试。正如年轻人所说,这就是炸弹
一段时间前,我试着联系作者,让作者将此信息粘贴到maven central,但目前为止运气不佳。您是否考虑过使用maxint作为参数调用
setMaxBackupIndex
,有效地让它永久运行?@flup,这无法扩展。使用常规的RollingFileAppender
,如果您有N个“备份”文件,则每次滚动都需要重命名所有N个文件,这可能非常慢。出于这个原因,“Extras”RollingFileAppender将备份计数限制为12。如果我能在创建时将创建时间(或某个唯一索引-不在乎是哪一个)输入到文件名中,我真的不想或不需要它重命名任何文件。@flup实际上比这更糟糕-如果你的maxBackupIndex=N,它将尝试查找并重命名所有N个文件(即使它们还不存在)。。。所以maxint绝对是不可能的!您需要使用log4j吗?Logback支持基于时间和大小的策略来滚动可能适合您的文件()。有趣!我认为最好的解决方案是为现有的appender修改代码。