zlog 2.0 开发中

发布于 2021-11-22 19:54:53 字数 2037 浏览 878 评论 2

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风苍溪 2021-11-23 04:47:24

有可能加上文件大小吗?其他验证(比如Md5)可能会影响性能

谢绝鈎搭 2021-11-23 04:09:14

是不是可以在 
fsync 时候根据配置文件是否已修改,进行自动重载配置文件?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文