源码及使用方法作者都有详细介绍:https://github.com/HardySimpson/zlog
本文对自己的首次使用zlog的过程作下简单记录。
1.下载:https : //github.com/HardySimpson/zlog/releases
2.安装:
$ tar -zxvf zlog-latest-stable.tar.gz $ cd zlog-latest-stable/ $ make $ sudo make install
或者$ make PREFIX=/usr/local/ $ sudo make PREFIX=/usr/local/ install
PREFIX表示zlog的安装目标。安装后,刷新动态链接器以确保程序可以找到zlog库。
$ sudo vi /etc/ld.so.conf
/usr/local/lib
$ sudo ldconfig
3.编辑配置文件:
路径自己选择,例如vi /etc/zlog.conf
[formats]
simple = "%m%n"
[rules]
my_cat.DEBUG "cat_debug.log", 10M * 10 ~ "cat_debug.log.#r";
#my_cat.INFO "info.log", 10M * 10 ~ "info.log.#r";
#my_cat.WARN "warn.log", 1M;
#my_cat.ERROR "error.log", 1M;
my_dog.DEBUG "dog_debug.log", 10M * 10 ~ "dog_debug.log.#r";
以上是按我自己的使用习惯编辑的配置文件:my_cat.DEBUG "cat_debug.log", 10M * 10 ~ "cat_debug.log.#r";
my_cat:这里自己随意命名,在初始化库时作为zlog_get_category的参数(下面有代码),
表示使用my_cat的模块的日志配置项,my_dog即表示my_dog模块,这样不同的程序就可以在同时使用该日志库配置文件以不同的规则进行日志输出了;
DEBUG:表示级别,trace<debug<info<warn<error;
"cat_debug.log":表示日志名;可以在前面加上路径,相对路径是配置文件路径的相对路径;
10M:表示一个日志文件最大10M,这个根据自己的需求设置,单位可以是K、M、G;
*号后面的10:表示最多产生10个日志,到10个即进入覆盖循环;
"cat_debug.log.#r":表示循环的方式,即在最后以数字递增的方式区分,每新增一个文件时会像下面这样
aa.log.2 -> aa.log.3
aa.log.1 -> aa.log.2
aa.log.0 -> aa.log.1
aa.log -> aa.log.0
除此之外还有按时间覆盖,比如一天生成一个日志等等。防止磁盘被写爆,一般限制日志的总数以及单个日志的大小。
4.在C源文件中使用zlog API
$ vi test_hello.c
#include <stdio.h>
#include "zlog.h"
int main(int argc, char** argv)
{
int rc;
zlog_category_t *c;
rc = zlog_init("/etc/zlog.conf");
if (rc) {
printf("init failed\n");
return -1;
}
c = zlog_get_category("my_cat");
if (!c) {
printf("get cat fail\n");
zlog_fini();
return -2;
}
zlog_debug(c, "hello, zlog debug");
zlog_info(c, "hello, zlog info");
zlog_warn(c, "hello, zlog warn");
zlog_error(c, "hello, zlog error");
zlog_fini();
return 0;
}
可以按照使用习惯对zlog_debug、zlog_info等加上自己的宏定义
#define LOG_DEBUG zlog_debug
#define LOG_INFO zlog_info
#define LOG_WARN zlog_warn
#define LOG_ERROR zlog_error
编译并运行它!
$ cc -c -o test_hello.o test_hello.c -I/usr/local/include
$ cc -o test_hello test_hello.o -L/usr/local/lib -lzlog -lpthread
$ ./test_hello
我配置的日志路径是cat_debug.log,查看test_hello程序所在
路径下的cat_debug.log文件里生成的日志内容
[root@localhost ~] cat cat_debug.log
2020-08-20 14:39:53 DEBUG [24432:ftw.c:113] hello, zlog debug
2020-08-20 14:39:53 INFO [24432:ftw.c:113] hello, zlog info
2020-08-20 14:39:53 WARN [24432:ftw.c:113] hello, zlog warn
2020-08-20 14:39:53 ERROR [24432:ftw.c:113] hello, zlog error
参考zlog作者的详细介绍:http://hardysimpson.github.io/zlog/UsersGuide-EN.html