关于log4cplus中AsyncAppender的配置

由于工作用log4cplus来记录日志,最近发现日志量大的时侯严重的影响了程序的处理效率,遂稍微研究了一下log4cplus, 发现所用到的RollingFileAppender是同步的,所以想改成异步的Appender比较下,但所用版本没有异步Appender,遂上官网看看了,发现自log4cplus.1.1.0来增加了AsyncAppender, 这个Appender支持异步的记录日志文件,但作者并没有更新文档(或是我没找到), 不知关于AsyncAppender的配置文件该如何写,稍微研究了下代码并摸索了,发现可以这样写(关于log4cplus的基本用法,google之):

log4cplus.rootLogger=TRACE, A1  
  
log4cplus.appender.A1=log4cplus::AsyncAppender  
log4cplus.appender.A1.Appender=log4cplus::RollingFileAppender  
log4cplus.appender.A1.Appender.File=xxx.log  
log4cplus.appender.A1.Appender.QueueLimit=10000  
log4cplus.appender.A1.Appender.ImmediateFlush=false  
log4cplus.appender.A1.Appender.MaxFileSize=1000MB  
log4cplus.appender.A1.Appender.MaxBackupIndex=5  
log4cplus.appender.A1.Appender.layout=log4cplus::PatternLayout  
log4cplus.appender.A1.Appender.layout.ConversionPattern=%D{[%Y-%m-%d %H:%M:%S.%q]} [%-5p] [%c{2}] [%F:%L]%m%n  


通过以发现AsyncAppender是异步到添加到RollingFileAppender上去的,其中QueueLimit属于表示存在于AsyncAppender队列中未处理的最大事件数量(目前默认为100),如果未处理的日志数量等于这个数个值,新的日志输出将会阻塞,直至未处理的值小于QueueLimit的值。


当然,异步日志的风险是当程序crash时,会丢失所有未输出的日志,对查看程序crash原因会造成一定的影响。


AsyncAppender是一个典型的生产者-消费者模型, 用一个队列来保存未处理的日志,一个线程来记录所有的日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值