欢迎光临散文网 会员登陆 & 注册

C++日志组件

2023-02-27 19:08 作者:神樂Mea--Official  | 我要投稿

C++日志组件

背景

无论使用什么编程语言,日志输出几乎都不在任何地方。 总之,日志大致有以下用途。 跟踪问题:帮助在线故障排除和识别问题,优化流程性能。 状态监测:通过日志分析,可以监测系统的运行状态。 安全审核:审核主要反映在安全性上,可以检测到不正确的操作。 日志:记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。 日志对程序来说非常重要。 良好的日志信息有助于在程序出现错误时快速定位并确定其原因。

组件

在这里插入图片描述

Spdlog

https://github.com/gabime/spdlog spdlog是一个开源的、快速的、仅有头文件的C++11 日志库,目前最新的发布版本为0.14.0。它提供了向流、标准输出、文件、系统日志、调试器等目标输出日志的能力。它支持的平台包括Windows、Linux、Mac、Android。

优点

1、非常快 2、无需依赖第三方库 3、支持跨平台 4、支持多线程 5、可对日志文件进行循环输出 6、可每日生成日志文件 7、支持控制台日志输出 8、可选的异步日志 9、支持日志输出级别 10、可自定义日志格式

部署方法

编译成静态库然后导入项目

cmake ..
make 
make install DESTDIR=../install

在这里插入图片描述

glog

https://github.com/google/glog Glog 是google 出的一个开源C++轻量级日志库,是一个C++98标准下开发的库,实现了应用级的日志系统。该库提供了C++风格的日志API,以及丰富的宏。

优点

1、严重性分级记录信息:INFO、WARNING、ERROR、FATAL。 2、可以有条件地记录日志信息。 3、有条件终止程序。丰富的条件判断定宏,可预设程序终止条件。 4、异常信号处理。程序异常情况,可自定义异常处理过程。 5、支持debug功能。可只用于debug模式。 6、线程安全日志记录方式。 7、系统级日志记录。 8、Google perror风格日志信息。 9、精简日志字符串信息。

部署方法

编译成动态库然后导入项目

cmake ..
make 
make install DESTDIR=../install

在这里插入图片描述

EasyLoggingpp

https://github.com/muflihun/easyloggingpp Easyloggingpp是一个C++开源log库 Easyloggingpp最大的特点是只需一个头文件,且所有功能都是内部实现,无需依靠其他第三方库,所以使用起来非常方便。

优点

1、跨平台:windows,linux,Android等平台 2、轻量级 3、高性能 4、线程和类型安全性 5、高可配置性:可配置log输出目的设备,自定义log格式,log等级调控等。 6、性能跟踪 7、支持STL log,第三方库(QT,boost等)log 8、可扩展:支持自定义类log输出

部署方法

使用easyloggingpp非常简单,只需两个步骤: (1)把easylogging++.h 包含进你的项目中; (2)用一个宏进行初始化:INITIALIZE_EASYLOGGINGPP 目录结构如下

Easylogger

https://github.com/armink/EasyLogger EasyLogger是一款超轻量级、高性能的C日志库,非常适合对资源敏感的软件项目,例如:IoT产品、可穿戴设备、智能家居等等。相比log4c、zlog这些知名的C日志库,EasyLogger的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。

优点

1、支持用户自定义输出方式(例如:终端、文件、数据库、串口、485、Flash) 2、日志内容可包含级别、时间戳、线程信息、进程信息等; 3、日志输出被设计为线程安全的方式; 4、支持多种操作系统(RT-Thread、UCOS、Linux、Windows...),也支持裸机平台; 5、日志支持RAW格式; 6、支持按标签、级别 、关键词进行动态过滤; 7、各级别日志支持不同颜色显示; 8、扩展性强,支持以插件形式扩展新功能。 名词解释: 1、RAW 格式:未经过格式化的原始日志。 2、标签:在软件中可以按照文件、模块、功能等方面,对需要打印的日志设定标签,实现日志分类

部署方法

编写makefile然后运行 make 命令生成可执行文件

性能分析

分别生成1000、10000、100000条自定义日志,每条日志文件2kb,测试耗时。

测试用例编写

编写一段代码,暴露一个程序中断的接口,编译成动态库,然后在另一个程序里面调用。 编写cmake 执行命令 cmake .. & make

实现效果

spdlog

在这里插入图片描述

glog

在这里插入图片描述

easyloggingpp

在这里插入图片描述

easylogger

在这里插入图片描述

最后

如有不好的地方或做的不对的地方,欢迎联系我 WeChat: Debu_cat


C++日志组件的评论 (共 条)

分享到微博请遵守国家法律