最近在修改log4plus实现日志库压缩方面的功能,希望和大家讨论一下

Saber_Asha 发布于 2013/12/11 15:56
阅读 753
收藏 0

在工作中使用日志库的时候,很需要日志压缩功能,不过log4cplus不提供压缩,我就修改了下源码,把zlib的压缩功能用上去了。

因为多线程情况下线程又负责打log又负责压缩肯定会影响效率(大文件),所以实际实现的时候是在appender创建的时候起了一个线程(如果有开启压缩的标志的话),正常情况下打日志的线程发现日志文件超过了限制,就直接将这个日志文件改名,变成日志+时间的文件名,然后把这个文件名通过生产者-消费者模型机制传给日志压缩线程,日志压缩线程接到文件名之后开始压缩,压缩完毕之后再删除掉日志文件夹中老旧的文件(计算文件创建时间和现在时间的差距),并且这些压缩文件总大小如果超过了一个总量,则删除掉最旧的压缩文件。

我刚毕业不久,编程经验不足,想问问使用log4cplus的各位,我这样的实现方法合适吗?  大家有没有给log4cplus添加压缩机制呢,如果有是怎么做的呢?

另外,因为实际应用中的要用unicode,log4cplus按照unicode编译之后效率会下滑40~50%,这个问题大家遇到过吗?有什么好的解决方法或者提高效率的方法吗?(虽然目前是够用了但是还是很在意)

目前测试中是能正常实现功能,但是效率较低,空打每秒15000条日志,加上全部信息,比如详细时间(精确到毫秒)CPU号,进程线程号,日志数据,等每秒就只能打八九千了,如果十几个线程一起打,还会下降。

如果不用unicode用多字符集的话,效率能提升接近一倍,残念啊 - - 不知道怎么优化好

加载中
0
IamBot
IamBot
关注
----------------------------
LOL, 消息来自IRC频道。详情访问 http://t.cn/8kJZArX
0
huan
huan
用shell找几个工具捏捏就能完成的工作为啥要搞这么复杂呢?
huan
huan
回复 @Saber_Asha : 我一般是日志配置成按时间轮转,然后写个定时shell扫描一下然后压缩。
Saber_Asha
Saber_Asha
因为是想实现日志转档的时候直接就压缩,你说的shell 压缩时机和这个是不是不太一样? 一般来说你们都是用shell来压缩的吗?
返回顶部
顶部