linux log4cxx 静态库,zlog 纯C日志函数库的简单使用方法

zlog简述:

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

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

zlog有这些特性:

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

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

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

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

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

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

*  用户自定义等级

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

*  精确到微秒

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

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

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

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

在外链网址已屏蔽 下载最新的zlog源码包。

1. tar -zxvf zlog-1.2.12.tar.gz 解压到当前目录。

2. 进入zlog-1.2.12, 执行make,在zlog-1.2.12/src/ 目录下生成libzlog.a 静态库和libzlog.so动态库。

3.编写测试程序test.c

1 #include "zlog.h"

2 #include

4 intmain()5 {6 intrc;7 zlog_category_t *zc;8 rc = dzlog_init("./test.conf", "my_cat");9 if(rc) {10 printf("init failed\n");11 zlog_fini();12 return -1;13 }14 int a = 10;15 char str[112] = "12asfew";16 dzlog_info("hello, zlog %d, %s", a, str);17 dzlog_debug("test aa");18 zlog_fini();19 return 0;20 }

5. 编写一个最简单配置文件test.conf,通过配置文件来控制debug级别,风格等。

1 [formats]2 simple = "%m%n"

3 [rules]4 my_cat.DEBUG >stdout;simple //将debug以上级别的信息输出到 stdout中去,格式为simple类型格式

6.编写Makefile, 文件目录如下

├── app

├── Makefile

├── test.c

├── test.conf

├── test.o

├── zlog-1.2.12

└── zlog-1.2.12.tar.gz

1 INCS = -I./zlog-1.2.12/src2 CFLAGS = $(INCS) ./zlog-1.2.12/src/libzlog.a -lpthread3 app:test.o4 gcc -o app test.o $(CFLAGS)5 test.o:test.c6 gcc $(INCS) -c -o $@ $<

7

8 clean:9 rm test.o app

7.执行可执行文件app    ./app 结果如下:

2014-03-22 16:18:47 INFO [15456:test.c:16] hello, zlog 10, 12asfew

2014-03-22 16:18:47 DEBUG [15456:test.c:17] test aa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值