C++日志组件
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