C的项目中一般都使用printf函数作为打印,这种日志方式只能输出实时的日志,不能将一些错误的日志保存下来,方便在后续的维护中查找原因,本文介绍使用一个用C语言写的日志系统zlog,可以在C项目中使用。

Zlog简介

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

Zlog源码

Zlog源码在Github上,源码网址

Zlog用户手册

Zlog提供了一份详细的使用手册,可按照手册上的例子探索Zlog的功能,参考手册

X86编译

cmd
1
2
make CC=gcc PREFIX=/home/dev/workspace/tmp/zlog-1.2.15/x86_lib
make CC=gcc PREFIX=/home/dev/workspace/tmp/zlog-1.2.15/x86_lib install

ARM编译

cmd
1
2
make CC=arm-none-linux-gnueabi-gcc PREFIX=/home/dev/workspace/tmp/zlog-1.2.15/lib
make CC=arm-none-linux-gnueabi-gcc PREFIX=/home/dev/workspace/tmp/zlog-1.2.15/lib install

Demo例子

  用Cmake实现了一个Demo例子,代码实现

Zlog配置

zlog.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[global]
default format = "%d.%us %-6V (%c:%F:%L) - %m%n"

[formats]
time = "%d(%F %T).%ms [%-6V] %m%n"
file = "%d(%F %T).%ms [%-6V] (%c:%F:%L) %m%n"
def = "%d(%T).%ms [%V] (%p:%f:%L) %m%n"

[rules]
# set_log.WARN >stdout;def
# set_log.=NOTICE >stdout;def
set_log.=INFO >stdout;def
# set_log.=DEBUG >stdout;def
set_log.=ERROR >stdout;def

*.* "pro.log", 10MB * 0

具体配置可参考用户手册。