当前位置:   article > 正文

zlog的安装与使用

zlog

zlog介绍

最近在C语言开发的项目中需要建立一个比较完善的日志系统,方便研发及后期维护管理。于是就找到了zlog,zlog是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。

其优势及详细用法直接看手册(zlog使用手册中文版): http://hardysimpson.github.io/zlog/UsersGuide-CN.html
若链接进不去可自行下载:https://download.csdn.net/download/fangye945a/10902503

一、zlog的下载、编译与安装

# git clone https://github.com/HardySimpson/zlog.git   //下载源码包
# cd zlog   //进入工程目录
# mkdir build_linux build_arm  //创建文件夹用于存放工程输出内容
# vim src/makefile           //修改makefile中的PREFIX为自己创建的目录,如下图所示
# make          //默认gcc编译,若需要交叉编译指定编译工具链即可:make CC=arm-linux-xxx-gcc
# make install  //将生成的库和工具拷贝至自己创建的目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

默认安装路径是/usr/local,修改安装路径为自己创建的目录路径:
在这里插入图片描述
编译出arm和linux两个版本的库如下图所示:
在这里插入图片描述

二、zlog的使用

只需要包含zlog.h头文件即可使用,根据配置文件输出日志信息。如下为忽略分类(zlog_category_t)的一组简单zlog接口dzlog写的示例程序。

#include <stdio.h>
#include "zlog.h"
 
int main(int argc,char *argv[])
{
	int rc;
	rc = dzlog_init("zlog.conf", "my_class"); //指定配置文件路径及类型名 初始化zlog
	if (rc) 
	{
		printf("init failed\n");
		return -1;
	}
 
	dzlog_info("hello, zlog info"); //打印普通信息
	
	dzlog_error("hello, zlog error");//打印错误信息
	
	dzlog_warn("hello, zlog warning"); //打印报警信息
	
	dzlog_debug("hello, zlog debug"); //打印调试信息
	
	zlog_fini();  //释放zlog
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

动态编译:gcc main.c -o test_zlog -I …/include -L …/lib/ -lzlog

静态编译:gcc main.c -o test_zlog -I …/include -L …/lib/ -static -lzlog -lpthread //需要依赖线程库

三、zlog配置文件

大部分的zlog的行为都取决于配置文件,比如把日志打到哪里去,用什么格式,怎么转档,都由配置文件来决定。
以如下配置文件为例:

[global]
strict init = true
buffer min = 1024
buffer max = 2MB
rotate lock file = /tmp/zlog.lock
default format = "%d.%us %-6V (%c:%F:%L) - %m%n"
file perms = 600
 
[rules]
my_class.* >stdout;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其中:[global]为全局参数

• strict init

如果"strict init"是true,zlog_init()将会严格检查所有的格式和规则,任何错误都会导致zlog_init() 失败并且返回-1。当"strict init"是false的时候,zlog_init()时会忽略错误的格式和规则。这个参数默认为true

• buffer min
• buffer max
zlog在堆上为每个线程申请缓存。“buffer min"是单个缓存的最小值,zlog_init()的时候申请这个长度的内存。写日志的时候,如果单条日志长度大于缓存,缓存会自动扩充,直到到"buffer max”。单条日志再长超过"buffer max"就会被截断。如果"buffer max" 是0,意味着不限制缓存,每次扩充为原先的2倍,直到这个进程用完所有内存为止。缓存大小可以加上KB, MB 或GB这些单位。默认来说"buffer min"是1K , “buffer max” 是2MB。(其单位不区分大小写)
• rotate lock file
这个选项指定了一个锁文件,用来保证多进程情况下日志安全转档。zlog会在zlog_init()时候以读写权限打开这个文件。确认你执行程序的用户有权限创建和读写这个文件。

• default format

这个参数是缺省的日志格式,默认值为:"%d %V [%p:%F:%L] %m%n"
这种格式产生的输出类似这样:2012-02-14 17:03:12 INFO [3758:test_hello.c:39] hello, zlog

详细可参考下表:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

• file perms

这个指定了创建日志文件的缺省访问权限。必须注意的是最后的产生的日志文件的权限
为"file perms"& ~umask。默认为600,只允许当前用户读写。

[levels]

用于定义用户自己的日志等级,建议和用户自定义的日志记录宏一起使用。若不自定义等级可不写。

语法为: (level string) = (level int), (syslog level, optional)

(level int)必须在[1,253]这个范围内,越大越重要。(syslog level)是可选的,如果不设默认为LOG_DEBUG。

zlog有6个默认的级别:“DEBUG”, “INFO”, “NOTICE”, “WARN”, “ERROR"和"FATAL”。

[format]

格式(Format)是用来描述输出日志的格式,比如是否有带有时间戳,是否包含文件位置信息等。

[rules]

规则(Rule)则是把分类、级别、输出文件、格式组合起来,决定一条代码中的日志是否输出,输出到哪里,以什么格式输出。

修改完配置文件后,往往需要检查配置文件是否合法,zlog工程在编译输出的bin目录下提供了命令行工具。

使用方法:./zlog-chk-conf xxx.conf

输出:–[zlog.conf] syntax right

则表示配置文件语法正确。
zlog详细配置方法可参考手册或者该博客:https://blog.csdn.net/yangzhenzhen/article/details/8439459

四、输出结果

在这里插入图片描述

五感谢

感谢源作者辛苦付出: fangye945a
yangzhenzhen

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/194984
推荐阅读
相关标签
  

闽ICP备14008679号