zlog 2.0 开发中
zlog2.0的目标是:
1.节省内存
2.节省CPU
3.增强性能
这3者是可能实现的吗?我想是的,软件开发,永远都会又更加优雅合适的解决方法,随着时间不断涌现出来。
当然,为了达到这3个目标,zlog的API语义也要有一定的变化
1. zlog_category_t ,分类,不再是跨线程可用的,多线程下的代码会是这样
// in thread a static zlog_category_t *a_cat; { a_cat = zlog_get_category("my_cat"); zlog_info(a_cat, "blablaa..."); } // in thread b static zlog_category_t *b_cat; { b_cat = zlog_get_category("my_cat"); zlog_info(b_cat, "blablaa..."); }
2.增加了一个“深度”的配置文件项,更透明的由用户来控制缓存、速度和安全性的平衡。配置文件就像这样:
[global] strict init = true rotate lock file = self auto reload = 3600 # reload configure file once every 3600 second # file mtime [deepness] # sign = permisson, buffer size, flush size, flush count, fsync count + = 600, 10KB, 8KB, 20, 1000 - = 600, 10KB, 1KB, 1, 20 ++= 777, 10KB, 8KB, 100, 0 [levels] TRACE = 10 CRIT = 130, LOG_CRIT [formats] * = "%d %V [%p:%F:%L] %m%n" simple = "%m%n" normal = "%d(%F %T.%l) %m%n" [rules] *.* +"%12.2E(HOME)/log/%c.log"; simple my_cat.!ERROR -"aa.log" my_.info >stderr; my_dog.=DEBUG >syslog, LOG_LOCAL0; simple
[deepness]决定了zlog给每个文件开多大的用户态缓存、缓存到多少write出去、多久fsync一次,然后以加减号的形式写在规则前面。
3. 考虑自动重载配置文件这个特性该怎么设计,原先在zlog1.2中开一个计数器,然后每次写日志+1。现在在zlog 2.0中,自动重载打算由时间来触发。问题是,每次写日志的时候,只有在rule或者format里面碰到需要输出时间的时候,才会调用gettimeofday()。如果没有任何一个rule或者format需要时间,那zlog就不会知道现在是什么时候,也没办法去做自动重载。
所以,还是性能和功能的平衡点的权衡问题。
我是否应该抛弃自动重载配置文件这个特性呢?
或者在每次写日志函数被调用时,都去跑一次gettimeofday(),无论后面是否需要。然后用这个时间来做自动重载呢?
希望大家能给我一些反馈,任何想法,或者其他希望在zlog 2.0中实现的特性或改变都行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有可能加上文件大小吗?其他验证(比如Md5)可能会影响性能
是不是可以在
fsync 时候根据配置文件是否已修改,进行自动重载配置文件?