1.介绍
zlog是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。
详细见官网:http://hardysimpson.github.io/zlog/UsersGuide-CN.html
2.特性
(1)syslog分类模型,比log4j模型更加直接了当。
(2)日志格式定制,类似于log4j的pattern layout。
(3)多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数。
(4)运行时手动、自动刷新配置文件(同时保证安全)。
(5)高性能,在我的笔记本上达到25万条日志每秒, 大概是syslog(3)配合rsyslogd的1000倍速度。
(6)用户自定义等级。
(7)多线程和多进程环境下保证安全转档。
(8)精确到微秒。
(9)简单调用包装dzlog(一个程序默认只用一个分类)。
(10)MDC,线程键-值对的表,可以扩展用户自定义的字段。
(11)自诊断,可以在运行时输出zlog自己的日志和配置状态。
(12)不依赖其他库,只要是个POSIX系统就成(当然还要一个C99兼容的vsnprintf)。
3.安装
zlog下载地址: https://github.com/HardySimpson/zlog
解压之后进入
执行:
#make
#make install
执行install之后,我们可以看到动态库与头文件分别拷贝到了 ‘/usr/local/lib/’ 与 ‘/usr/local/include/’ 路径下,在程序运行之前, 保证libzlog.so在系统的动态链接库加载器可以找到的目录下:
#vim /etc/li.so.conf
写入:/usr/local/lib
#ldconfig
4.测试
如图为我的测试目录
main.c
#include <stdio.h>
#include "zlog.h"
#include <unistd.h>
int main(int argc, char** argv)
{
printf("%s\n",argv[0]);
int rc;
zlog_category_t *zc;
rc = zlog_init("test.conf");
if (rc) {
printf("init failed\n");
return -1;
}
zc = zlog_get_category("my_cat");
if (!zc) {
printf("get cat fail\n");
zlog_fini();
return -2;
}
zlog_debug(zc, "%s%d","hehe",2014);
zlog_info(zc, "hello, zlog 2");
zlog_info(zc, "hello, zlog 3");
zlog_debug(zc, "hello, zlog 4");
zlog_error(zc, "hello, zlog -- error");
char hehe[]="zbyyyyyy";
zlog_warn(zc,hehe);
zlog_fini();
return 0;
}
test.conf
[global]
strict init = true
buffer min = 1024
buffer max = 2048
rotate lock file = /tmp/zlog.lock
[formats]
simple = "%d %V %m%n"
simple2 = "%d %V %m%n"
simple3 = "%d %V "
[rules ]
*.=debug >stdout;simple
*.=info >stdout;simple2
*.=error >stdout;simple3
my_cat.info "test.log", 1M; simple
makefile:
all:
gcc main.c -o out -lzlog