无论使用什么编程语言,日志输出几乎都不在任何地方。 总之,日志大致有以下用途。
跟踪问题:帮助在线故障排除和识别问题,优化流程性能。
状态监测:通过日志分析,可以监测系统的运行状态。
安全审核:审核主要反映在安全性上,可以检测到不正确的操作。
日志:记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。
日志对程序来说非常重要。 良好的日志信息有助于在程序出现错误时快速定位并确定其原因。
Spdlog
github.com/gabime/spdl…
spdlog是一个开源的、快速的、仅有头文件的C++11 日志库,目前最新的发布版本为0.14.0。它提供了向流、标准输出、文件、系统日志、调试器等目标输出日志的能力。它支持的平台包括Windows、Linux、Mac、Android。
1、非常快
2、无需依赖第三方库
3、支持跨平台
4、支持多线程
5、可对日志文件进行循环输出
6、可每日生成日志文件
7、支持控制台日志输出
8、可选的异步日志
9、支持日志输出级别
10、可自定义日志格式
编译成静态库然后导入项目
cmake ..
make install DESTDIR=../install
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 install DESTDIR=../install
EasyLoggingpp
github.com/muflihun/ea…
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
github.com/armink/Easy…
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
easyloggingpp
easylogger
如有不好的地方或做的不对的地方,欢迎联系我
WeChat: Debu_cat
本文使用 markdown.com.cn 排版
- 4687
-
Java升级之路
Spring Boot
- 7767
-
MacroZheng
Elasticsearch