C语言日志库zlog基本使用
1、zlog的下载、编译与安装
git clone https://github.com/HardySimpson/zlog.git
vim src/makefile
设置安装路径PREFIX
设置工具链CC
编译问题:
relocation R_X86_64_PC32 against symbol `zlog_conf_del'......recompile with –fPIC
解决方法:REAL_CFLAGS之前增加CFLAGS += -fPIC
make
make install
2、使用手册
http://hardysimpson.github.io/zlog/UsersGuide-CN.html
3、参考配置
[global]
strict init = true
reload conf period = 0buffer min = 1024
buffer max = 2MBrotate lock file = self
default format = "%d(%F %T.%l) %-6V (%c:%F:%L) - %m%n"file perms = 666
fsync period = 1K[levels]
#TRACE = 10
#CRIT = 130, LOG_CRIT[formats]
simple = "%m%n"
normal = "%d [%V] [%U:%L] %m%n"[rules]
test.* >stdout; normal
test_log.* "./test.log", 1KB*4 ~ "./test-%d(%Y%m%d).#2s.log"; normal
4、参考demo
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "zlog.h"int main(int argc, const char *argv[])
{int rc;zlog_category_t *c;rc = zlog_init("./zlog.conf");//初始化if (rc) { printf("init failed\n");return -1; }c = zlog_get_category("test_log");//获取test_log分类和对应的规则if (!c) {printf("zlog_get_category failed\n"); zlog_fini();return -2; }int i = 7;zlog_info(c, "abcdecghilklmnopqrstuvwxyz:%d", i);//写日志zlog_fini();//清理return 0;
}
5、说明
[rules]
test_log.DEBUG "./test.log", 1KB*4 ~ "./test-%d(%Y%m%d).#2s.log"; normal
test_log:分类
DEBUG:日志等级
"./test.log", 1KB*4 ~ "./test-%d(%Y%m%d).#2s.log"; normal:具体规则
"./test.log":日志保存路径
1KB:每个日志文件的大小
4:最多保存4个日志文件
"./test-%d(%Y%m%d).#2s.log":文件转档设置(当日志文件满1KB时进行转档保存)
normal:设置的日志输出格式
6、zlog进阶
自定义输出
#include <stdio.h>
#include <stdlib.h>
#include "zlog.h"#define ZLOG_CONFIG_PATH "./zlog.conf"zlog_category_t *errorCat = NULL;int zlogApi_Error(zlog_msg_t *msg)
{printf("\033[40;31m");//printf("[%s][%s][%ld]\n", msg->path, msg->buf, (long)msg->len);printf("%s", msg->buf); printf("\033[0m"); return 0;
}int zlogApi_reload(void)//重载配置
{return zlog_reload(ZLOG_CONFIG_PATH);
}//signal(SIGUSR1, zlogApi_reloadSignalHandler);
//注册用户信号,用于重置配置
//kill -USR1 pid
void zlogApi_reloadSignalHandler(int sig)
{//printf("reload signal:%d\n", sig);zlogApi_reload();
}int zlogApi_init(void)
{int ret = 0;ret = zlog_init(ZLOG_CONFIG_PATH);if (ret) { printf("zlog_init failed\n");return -1; }zlog_set_record("myError", zlogApi_Error);errorCat = zlog_get_category("myErrorCat");if (!errorCat) {printf("zlog_get_category errorCat failed\n"); zlog_fini();return -2; } return 0;
}void zlogApi_deInit(void)
{zlog_fini();
}
#ifndef _ZLOG_API_H_
#define _ZLOG_API_H_#include "zlog.h"extern zlog_category_t *errorCat;#define My_Zlog_Error(fmt...) zlog_error(errorCat, fmt)int zlogApi_reload(void);
void zlogApi_reloadSignalHandler(int sig);
int zlogApi_init(void);
void zlogApi_deInit(void);#endif
[formats]
simple = "%m%n"
format01 = "%d [%V] [%U:%L] %m%n"
format02 = "[%V] [%U:%L] %m%n"[rules]
myErrorCat.* $myError, ""; format02#myErrorCat.* "./my.log", 1KB*2 ~ "./my-%d(%Y%m%d).#2s.log"; format01#myErrorCat.* "/dev/null"#通过注释规则和重载配置来实现控制日志输出
C语言日志库zlog基本使用相关推荐
- 【C/C++开源库】单片机/嵌入式中的C语言日志库
日志系统在系统开发和调整过程中的重要性,大家应该都清楚,特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦. 因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要. ...
- 【CC++开源库】单片机嵌入式中的C语言日志库
日志系统在系统开发和调整过程中的重要性,大家应该都清楚,特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦. 因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要. ...
- Linux-C 简单的C语言日志库
Linux-C 简单的C语言日志库 一.简述 记--C语言实现的简单的日志库,可循环覆盖滚动记录日志文件,达到限制就另记一个日志文件,可控制日志文件个数,可控制日志文件大小. 打包下载 ...
- Go语言日志库zerolog
Go语言日志库zerolog 在开发大型项目时,将日志进行结构化以提高可读性.可查询性和速度是非常重要的. 为什么你选择不使用其他结构化日志库,如logrus或zap? Zerolog 是一款高性能且 ...
- 纯C语言日志类库 Zlog
转自: http://hardysimpson.github.io/zlog/UsersGuide-CN.html 难易 著23 Contents Chapter 1 zlog是什么? 1.1 兼 ...
- go 日志库 zap
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.zap是什么? 二.使用步骤 1.基本使用 2.写入文件 前言 zap日志 Zap提供了两种类型的日志记录器-Su ...
- go语言 gin框架中集成zap日志库
在go语言gin框架中,日志是默认输出到终端的,但是我们在实际工作中,一般来说是需要记录服务器日志的.而最常用的日志库就是zap日志库,我们需要将gin在终端输出的内容通过zap日志库记录到文件中,首 ...
- 介绍一个使用 Go 语言开发的高性能可配置可扩展的日志库 logit
这是一个使用 Go 语言开发的高性能可配置可扩展的日志库,名字叫 logit. logit 是一个高性能的日志库,从测试结果来看,比主流日志库 zap.logrus 这些要快不少. logit 支持配 ...
- Go 语言中的 logger 和 zap 日志库
目录 Go 语言中的 logger 和 zap 日志库 Go Logger Zap Logger Logger Sugared Logger 定制 Logger 记录到文件中 Zap logger 中 ...
- 在Go语言项目中使用Zap日志库
在Go语言项目中使用Zap日志库 Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 一.在Go语言项目中使用 ...
最新文章
- java圆周率流程图,流程图、PI图入门知识 课件.doc
- 简单介绍--TOSCA自动化测试工具
- lo ate my IP address问题解决
- 扎心!程序员泪奔的8个瞬间
- 留守女孩携笔从戎,被录取为空军飞行员
- dz论坛连接mysql数据库_dz论坛搬家后连接数据库等教程
- arcgis导入坐标点转面_ArcGIS问题:如何将坐标点或者点文件转换成线、面文件
- 在php中使用CKEDITOR在线编辑器
- Windows中查找命令的路径 (类似Linux中的which命令)
- 移动端实现标题文字的截断
- 如何为自定义域使用我自己的SSL证书?
- gin--简单路由代码
- 如何安装uclient_UClient官方版下载_UClient手机官方版下载v2.0.0.1580_3DM单机
- 高逼格/高效率办公工具、开发工具、开发插件等各种骚操作汇总 —— [努力更新中...]
- Java后台生成NO2016012701(代码+年月日+流水号)这样的流水编号
- matlab中的对数log()使用
- ⑦Java SE知识点回顾与小结(面向对象)
- python 基础知识汇总
- Linux系统的简易命令(三)
- 【Linux记录】Linux 可以telnet通localhost,不能telnet ip,telnet localhost正常,telnet ip失败。
热门文章
- 小程序实现简单语音聊天
- c语言标准库详解(五):stdio.h之直接IO/文件定位/错误处理
- stdio.h 之 printf
- 关于stdafx.h的错误
- 数​据​库​查​看​内​存​使​用​I​N​F​O​R​M​I​X
- curl测试post请求
- php字符串的截取方式
- Python调试工具——ipdb
- U盘PE删除影子系统(PowerShadow),解决安装后重启蓝屏的问题
- spss19 视频教程下载_19个网站免费下载股票视频介绍和录像