当前位置: 首页 > news >正文

C语言库zlog日志库工具

C语言库zlog日志库工具

  • 介绍
    • 1. ​核心特性
    • 2. ​设计模型
    • 3. ​功能亮点
    • 4. ​应用场景
    • 5. ​对比优势
    • 6. ​局限性
  • 使用方法
    • 一、安装与编译
    • 二、配置文件核心语法
    • 三、高级功能
    • 四、调试与验证
    • 五、示例配置文件
  • 示例demo
    • 一、基础分类日志输出(文件+控制台)
    • 二、多分类输出到不同文件
    • 三、动态刷新配置(无需重启程序)
    • 四、日志滚动(按大小分割)
    • 五、简化接口(dzlog全局分类)

zlog官网

介绍

zlog是一个专为C语言设计的高性能、高可靠性日志函数库,具有以下核心特性与功能:

1. ​核心特性

​高性能:支持每秒数万至数十万条日志记录(具体性能因配置而异,最高可达72,000条/秒),远超传统syslog的性能。
​线程安全与进程安全:适用于多线程和多进程环境,支持安全日志转档(日志文件按大小自动分割)。
​纯C实现:无第三方依赖,兼容POSIX系统和C99标准,适用于嵌入式Linux及其他资源受限环境。

2. ​设计模型

​分类(Category)​:通过字符串标识不同日志来源,例如代码中可通过不同分类名输出不同目的的日志。
​规则(Rule)​:将分类、日志级别、输出目标(如文件、标准输出)和格式动态绑定,实现灵活的日志过滤与分发。
​格式(Format)​:自定义日志输出模板,支持时间戳、文件位置、微秒级精度等字段,类似log4j的Pattern Layout。

3. ​功能亮点

​动态配置:通过配置文件(如zlog.conf)定义日志行为,无需修改代码即可调整日志格式、级别和输出路径。
​多输出支持:包括动态/静态文件、标准输出(stdout/stderr)、syslog及用户自定义输出函数。
​运行时配置刷新:通过zlog_reload()函数动态加载新配置,适用于服务不中断的场景。
​自定义日志级别:允许用户扩展默认的6级日志(DEBUG、INFO、NOTICE、WARN、ERROR、FATAL)。

4. ​应用场景

​嵌入式系统:因其轻量化和高性能特性,广泛用于嵌入式Linux项目。
​服务器端程序:适合需要高吞吐日志记录的分布式系统。
​跨平台开发:支持Linux、Windows、Android、iOS等平台。

5. ​对比优势

​优于syslog:速度更快(可达syslog的数百倍),功能更灵活。
​优于log4c:功能更全面,安全性更高,且持续维护。

6. ​局限性

​不直接支持网络/数据库输出:需配合外部工具(如rsyslog、Logstash)实现日志远程存储或分析。
综上,zlog凭借其高效性和灵活性,成为C语言项目中替代printf、syslog及传统日志库的优选方案,尤其适合对性能和资源占用敏感的嵌入式场景

使用方法

以下是zlog库的详细使用方法,涵盖配置、初始化、日志输出及高级功能:

一、安装与编译

​源码安装

下载源码并解压后,执行以下命令:
bash
$ ./configure --enable-test # 包含测试案例
$ make
$ sudo make install # 默认安装至/usr/local
​交叉编译:修改src/Makefile中的CC和AR为交叉工具链路径后编译。
​验证安装
编译后生成libzlog.so和libzlog.a,需在程序中链接-lzlog并包含头文件zlog.h。

二、配置文件核心语法

配置文件(如zlog.conf)通过分类(Category)、格式(Format)、规则(Rule)控制日志行为:

​全局参数(Global)​

strict init:设为true时严格检查配置错误,建议开发阶段启用。
buffer min/max:日志缓存大小(默认1KB~2MB),支持单位如KB、MB。
file perms:日志文件权限(默认600)。
​格式(Format)​
定义日志输出模板,支持占位符如:

%d(%F %T.%us):时间戳(含微秒)
%V:日志级别(如INFO)
%F:%L:文件名和行号
示例:simple = “%d.%-8.8us %-5V [%F:%L] %m%n”
​规则(Rule)​
绑定分类、级别、输出目标及格式:

​基本规则:my_cat.INFO “./logs/app.log”, 10MB; simple
(将my_cat分类的INFO及以上日志输出到文件,按10MB切分)
​多目标输出:my_cat.* >stdout; my_cat.ERROR syslog

三、高级功能

​动态刷新配置
调用zlog_reload()可重新加载配置文件,无需重启程序。

​日志转档(Rotate)​

​按大小切分:my_cat.INFO “./logs/app.log”, 100MB * 5 “./logs/app.log.#r”;
(保留5个历史文件,按序号滚动)
​按时间切分:my_cat.* “./logs/%c.%d(%Y%m%d).log”;
​自定义日志级别
在配置文件中扩展级别:

ini
[levels]
TRACE = 10
CRITICAL = 130, LOG_CRIT

四、调试与验证

​检查配置文件语法
使用zlog-chk-conf工具验证配置正确性:

bash
$ ./zlog-chk-conf zlog.conf
​多进程/线程安全
zlog通过锁文件(如/tmp/zlog.lock)保证多进程下日志转档安全。

五、示例配置文件

ini
[global]
strict init = true
buffer min = 1KB
file perms = 600

[formats]
detailed = “%d(%F %T.%us) %-5V [%p:%F:%L] %m%n”

[rules]
default.* >stdout; detailed
server.* “/var/log/server.log”, 50MB; detailed
通过上述步骤,可快速集成zlog至C项目中,实现高性能、可定制的日志管理。

示例demo

一、基础分类日志输出(文件+控制台)

配置文件 demo1.conf



ini
[global]
strict init = true
file perms = 600

[for

相关文章:

  • 23种设计模式-结构型模式-组合
  • RabbitMQ消息队列面试题集合
  • 如何使用 FastAPI 构建 MCP 服务器
  • 【电动汽车再生制动控制技术(万字长文,图文并茂)】
  • 全国职业院校技能大赛 网络建设与运维样题解析
  • 11-SpringBoot3入门-整合aop
  • 分布式计算Ray框架面试题及参考答案
  • 喜讯 | 耘瞳科技视觉检测与测量装备荣膺“2024机器视觉创新产品TOP10”
  • SerDes(Serializer/Deserializer)详解
  • SOME/IP-SD -- 协议英文原文讲解10
  • 广度优先搜索(BFS)与深度优先搜索(DFS)解析
  • 通义万相2.1 你的视频创作之路
  • Web-ssrfme:redis 未授权访问攻击
  • 【go】数组与切片
  • GoLand 2024.3 中文 GO语言开发工具
  • 什么是架构,以及当前市面主流架构类型有哪些?
  • 智能车载终端测试:慧通测控多参数综合测试定制化方案
  • <em>彩</em><em>票</em><em>导</em><em>师</em><em>带</em><em>玩</em><em>群</em>
  • TensorFlow SegFormer 实战训练代码解析
  • 解决QSharedPointer栈变量的崩溃问题
  • 网站后台登陆网址是多少/云速seo百度点击
  • 仓库管理系统数据库设计/武汉seo排名
  • 门户网站开发招标/推广和竞价代运营
  • 肇庆微网站/网站快速收录技术
  • wordpress 登录页加密/沧州网站推广优化
  • 建立网站一般包括什么等方式/b站推广网站2024下载