zlog 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
zlog 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
zlog 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 LGPL
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 难易
适用人群 未知
收录时间 2012-03-26

软件简介

星星之火,可以燎原

zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。

事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。log4c异常坑爹(有内存泄漏、效率低等等),而且已经停止开发

所以我(难易)写了zlog。 

zlog有这些特性:


 *  syslog分类模型,基于规则路由过滤,比log4j模型要正确高效,详见为什么log4j的概念模型是错误的

 *  日志格式定制,类似于log4j的pattern layout

 *  多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数

 *  运行时手动或自动刷新配置(同时保证安全)

 *  高性能,在我的笔记本上达到338'638条日志每秒, 大概是syslog(3)配合rsyslogd的1000倍速度 

 *  高可靠性和速度之间的平衡,用户自定义多少条日志后fsync数据到硬盘

 *  用户自定义等级

 *  多线程和多进程环境下保证安全转档

 *  精确到微秒

 *  简单调用包装dzlog(一个程序默认只用一个分类)

 *  MDC,线程键-值对的表,可以扩展用户自定义的字段

 *  自诊断,可以在运行时输出zlog自己的日志和配置状态

 *  不依赖其他库,只要是个POSIX系统就成(当然还要一个C99兼容的vsnprintf)

网友提供的其他版本,方便其他平台安装

auto tools版本: https://github.com/bmanojlovic/zlog
cmake版本:https://github.com/lisongmin/zlog
windows版本: https://github.com/lopsd07/WinZlog

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(8) 发布并加入讨论🔥
发表了资讯
2013/09/25 00:00

zlog 1.2.12 发布,纯 C 日志函数库

虽然我在努力开发zlog 2.0,目标为更节省内存(并合理利用缓存提高性能),但在多线程的思路上还是遇到了障碍,可以说陷入困境。 先把这段1.2 版本这几个月的bugfix发布一下。 避免了一些情况下会出现Segmentation fault。 功能上有一点小改变: 一个网友给我提交了一段代码,当日志输出到一个固定的文件的时候,当外部的程序重命名或者删除原文件后,日志库会自动重新生成日志。借鉴了python的WatchedFileHandler。非常感谢。...

4
9
发表了资讯
2013/02/08 00:00

zlog 1.2.9 发布,纯 C 日志函数库

zlog 1.2.9 是一个 bugfix 版本,完善了英文文档。 zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。 zlog有这些特性: * syslog分类模型,基于规则路由过滤,比log4j模型要正确高效,详见为什么log4j的概念模型是错误的。 * 日志格式定制,类似于log4j的pattern layout * 多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数 * 运行时手动或自动刷新配置(同时保证安全) * 高性能,在...

3
17
发表了资讯
2013/01/03 00:00

zlog 1.2.8 发布,纯 C 日志函数库

新年到了,开源贵在坚持,这次的更新的主要内容是 增加gcc __attribute__宏,用于gcc在编译的时候能检查zlog输出格式和参数匹配 支持配置文件一行的中间用#注释 若干小bug的修复 鉴于github不再提供下载页面,只能从版本库下载,修改一些文档的链接 另外,很高兴看到有网友提供了适合其他平台安装的zlog版本,非常感谢! auto tools版本: https://github.com/bmanojlovic/zlog cmake版本: https://github.com/lisongmin/zlog w...

3
22
发表了资讯
2012/11/15 00:00

zlog 1.2.5 发布,纯 C 日志函数库

这是一个错误修复、性能提高、降低内存使用的版本,解决了下列问题: 保证在单个线程退出的时候自动删除缓存(而不是等到zlog_fini才释放), 用atexit来注册函数解决主线程退出的问题。这样,即使大规模的创建销毁线程,zlog依然可以把缓存大小控制住,和存活的线程数量成线性比例。 缓存所有的时间字符串,保证所有的%d在strftime的时候都能每秒缓存,达到和原先%D一样的速度,这样无论在配置中用了多少%d的时间串,都能保证最...

2
13
发表了资讯
2012/10/01 00:00

zlog 1.2.3 发布,纯 C 日志函数库

zlog 1.2.3 发布,这是一个bugfix 版本。zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。 zlog 主要特性: * syslog分类模型,基于规则路由过滤,比log4j模型要正确高效,详见为什么log4j的概念模型是错误的。 * 日志格式定制,类似于log4j的pattern layout * 多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数 * 运行时手动或自动刷新配置(同时保证安全) * 高性能,在我的笔记本...

0
11
发表了资讯
2012/08/08 00:00

zlog 1.2.0 发布,纯C日志函数库

自从zlog 1.1 版发布以来,受到了不少关注和建议。在git上的下载数量也非常高 经过长时间的深思熟虑,我在zlog内增加了这些功能,发布 zlog 1.2.0版 : (a) 对管道的支持,从此zlog可以外接cronolog这样的日志过滤程序来输出 (b) 全面的日志转档支持,详见http://hardysimpson.github.com/zlog/UsersGuide-CN.html#htoc26 (c) 其他兼容性的代码改动 zlog 1.2 在库方面是和zlog 1.0/1.1二进制兼容的,区别在于: (a) 所有的宏改为...

3
7
发表了资讯
2012/07/09 00:00

zlog 1.1.1 发布,纯C日志函数库

zlog 1.1.1 优化了好几处 提高日志等级不输出的时候的判断速度 缓存了pid,tid的字符串形式 缓存了时间日期的字符串形式,增加了%D默认时间格式 加速了微妙、毫秒的输出速度 并且发现了原来1.0版为了追求速度而造成的一个问题——标准IO库带有缓存,而不同的进程写同一个文件时用的是不同的缓存,而这会导致日志交错,所以退回到采用write的系统调用来解决原子性问题。所以从表面上来看写日志的速度下降了(不过依然在我的笔记本...

7
11
发表了资讯
2012/06/19 00:00

zlog 1.0.7 发布,纯C日志函数库

zlog是一个高可靠,高性能、线程安全、灵活、概念清晰的纯C日志函数库。 一开始打算把strftime,也就是从测试上来看耗费cpu最多的调用,自己写函数替代。可惜的是,写完后发觉vfprintf消耗增大,最后反而不如直接用strftime,看来拼性能是不如GNU那批大爷阿。 言归正传,1.0.7版在功能上只改动一个一处,就是把线程号%t的显示改为16进制,节省点地方。还有一些文档上的、编译选项上的优化。程序做了一些优化,在callgrind的测试...

8
4
发表了资讯
2012/06/15 00:00

zlog 1.0.6 发布,纯C日志函数库

再次感谢[nikuailema at gmail.com],找到了zlog的另一个瓶颈。 在我的开发环境下 ------------------------------------------------- v1.0.6 $ time ./test_press_zlog 1 10 100000 real 0m1.814s user 0m3.060s sys 0m0.270s ------------------------------------------------- v1.0.5 $ time ./test_press_zlog 1 10 100000 real 0m2.779s user 0m4.170s sys 0m0.560s 可以看到速度提升了1倍不到点。...

3
6
发表了资讯
2012/06/14 00:00

zlog 1.0.4 发布,纯 C 日志函数库

zlog 1.0.4发布了,感谢[nikuailema at gmail.com],该版本在初始化时缓存了静态日志文件的FILE *fp,将写静态日志文件的效率提高了3倍左右。 zlog是一个高可靠,高性能、线程安全、灵活、概念清晰的纯C日志函数库。

3
7
发表了资讯
2012/06/06 00:00

zlog 1.0.3 发布,纯 C 日志函数库

zlog 1.0.3 发布了,该版本支持动态的定义每多少条文件fsync一次日志,以及定期加载配置文件。 zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。

1
10
发表了资讯
2012/06/01 00:00

zlog 1.0.0 发布,纯C日志函数库

在经过2个月的思考、相亲、考试、发呆、编码之后,zlog于儿童节发布1.0.0版!(代码规模也从7千行到了8千行) 首先祝大家儿童节快乐! 1.0.0版提供了如下新的特性 大幅改写了不少组件初始化和重载的代码,最终使得重载日志配置zlog_reload()成为原子性的操作!如果失败将会回滚到上一次的正确配置 配置文件的布局和格式改变了,分成几节,更加清晰易懂 在编译器支持的情况下,能打印日志发生在哪个函数内,来源于__func__或者__F...

0
8
发表了资讯
2012/04/09 00:00

zlog 0.9.1发布,纯C日志函数库

相对于zlog 0.9.0,本次发布只修改了一个接口函数的命名,即zlog_update改名为zlog_reload,把API稳定下来。 zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。作者编写的初衷是因为log4c不给力,而log4j、log4cxx等log4系列的日志函数库在概念上不正确。zlog继承了unix操作系统中syslog的伟大传统,将日志系统的分类、级别、输出方向、输出格式完全解耦。废话不多说,这个是上手指南 这个函数库在我目前的工作环境...

0
10
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
8 评论
232 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部