log4cpp回滚文件机制

回滚文件配置:

log4j.appender.RootFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.RootFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootFileAppender.layout.ConversionPattern=%d{} %t %p %c %m%n
log4j.appender.RootFileAppender.fileName=foo.log
log4j.appender.RootFileAppender.maxFileSize=11343143
log4j.appender.RootFileAppender.maxBackupIndex=2

 

核心代码:

 

假设日志文件为foo.log, 当文件长度达到maxFileSize,将要"回滚"。要么将foo.log清空,从而可以继续写入日志;要么备份foo.log文件,换成其他文件名,然后创建一个新的foo.log继续写入文件,这个机制是由maxBackupIndex来控制的:

若maxBackupIndex=2,则:

  1. foo.log第一次回滚,则将foo.log命名成foo.log.1来进行备份,然后创建新的foo.log,继续写入日志
  2. foo.log第二次回滚,将foo.log.1命名成foo.log.2,将foo.log命名成foo.log.1,然后创建新的foo.log,继续写入日志
  3. foo.log第三次回滚,由于备份的文件个数已经达到了maxBackupIndex(这个值为2),因此会删除foo.log.2,然后,将foo.log.1命名成foo.log.2,将foo.log命名成foo.log.1,然后创建新的foo.log,继续写入日志
  4. 以后的操作步骤都和第3步骤一致

从log4cpp中抓取出来的代码便是说明了上面4个步骤。里面用std::ostringstream配合std::string相当的漂亮(测试的时候源代码稍微改了一下,支持unicode)!

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值