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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
/****************************************************************************** Module: VC-Logger Purpose: 记录程序日志。 1. 把日志信息输出到指定文件 2. 对于 GUI 程序,可以把日志信息发送到指定窗口 3. 对于Console应用程序,可以把日志信息发往标准输出 (std::cout) Desc: 1、功能: -------------------------------------------------------------------------------------- a) 把日志信息输出到指定文件 b) 每日生成一个日志文件 c) 对于 GUI 程序,可以把日志信息发送到指定窗口 d) 对于Console应用程序,可以把日志信息发往标准输出 (std::cout) e) 支持 MBCS / UNICODE,Console / GUI,win32 / x64 程序 f) 支持动态加载和静态加载日志组件 DLL g) 支持 DEBUG/TRACE/INFO/WARN/ERROR/FATAL 等多个日志级别 2、可用性: -------------------------------------------------------------------------------------- a) 简单纯净:不依赖任何程序库或框架 b) 使用接口简单,不需复杂的配置或设置工作 c) 提供 CStaticLogger 和 CDynamicLogger 包装类用于静态或动态加载以及操作日志组件,用户无需关注加载细节 d) 程序如果要记录多个日志文件只需为每个日志文件创建相应的 CStaticLogger 或 CDynamicLogger 对象 e) 只需调用 Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法记录日志 f) 日志记录方法支持可变参数 g) 日志输出格式: 3、性能: -------------------------------------------------------------------------------------- a) 支持多线程同时发送写日志请求 b) 使用单独线程在后台写日志,不影响工作线程的正常执行 c) 采用批处理方式批量记录日志 Usage: 方法一:(静态加载 Logger DLL) -------------------------------------------------------------------------------------- 0. 应用程序包含 StaticLogger.h 头文件 1. 创建 CStaticLogger 对象(通常为全局对象) 2. 调用 CStaticLogger->Init(...) 初始化日志组件 3. 使用 CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法写日志 4. 调用 CStaticLogger->UnInit(...) 清理日志组件(CStaticLogger 对象析构时也会自动清理日志组件) 方法二:(动态加载 Logger DLL) -------------------------------------------------------------------------------------- 0. 应用程序包含 DynamicLogger.h 头文件 1. 创建 CDynamicLogger 对象(通常为全局对象) 2. 调用 CDynamicLogger->Init(...) 初始化日志组件 3. 使用 CDynamicLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法写日志 4. 调用 CDynamicLogger->UnInit(...) 清理日志组件(CDynamicLogger 对象析构时也会自动清理日志组件) 方法三:(直接用导出函数加载 Logger DLL) -------------------------------------------------------------------------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值