C++日志工具spdlog接入与使用
C++日志工具spdlog接入与使用简介- - -说明- - -- - -下载- - -- - -特点- - -接入使用结论简介- - -说明- - -最近开发一个windows弱网工具,打算接入一个日志工具,果断github找一波,发现了spdlog,用了一下,简单易用,分享给大家。- - -下载- - -github 地址: https://github.com/gabime/spdlog-
C++日志工具spdlog接入与使用
简介
- - -说明- - -
最近开发一个windows弱网工具,打算接入一个日志工具,果断github找一波,发现了spdlog,用了一下,简单易用,分享给大家。
- - -下载- - -
github 地址: https://github.com/gabime/spdlog
- - -特点- - -
个人使用,主要还是方便高效,功能齐全。经过个人使用,确实满足要求。
- 快速高效
- 接入方便
- 支持异步
- 控制台,系统,文件,Android日志支持
- 支持自定义格式
- 易扩展
接入
我这里使用最简单的方式接入
1. git clone https://github.com/gabime/spdlog.git 下载源码
2. 下载后目录如下:
3. 将spdlog目录拷贝到项目的include文件夹中:
4. 在项目属性中,配置include目录:
5. 之后就可以在项目中自由使用了。
使用
- 声明:
#include "spdlog/spdlog.h"
using namespace spdlog;
- 测试使用使用官方例子,结果与代码如下:
spdlog::info("Welcome to spdlog!");
spdlog::error("Some error message with arg: {}", 1);
spdlog::warn("Easy padding in numbers like {:08d}", 12);
spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42);
spdlog::info("Support for floats {:03.2f}", 1.23456);
spdlog::info("Positional args are {1} {0}..", "too", "supported");
spdlog::info("{:<30}", "left aligned");
spdlog::set_level(spdlog::level::debug); // Set global log level to debug
spdlog::debug("This message should be displayed..");
// change log pattern
spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
3. 输出到文件测试:
//set_level(spdlog::level::debug);
flush_on(spdlog::level::err);//打印error的时候强制同步日志到文件
flush_every(std::chrono::seconds(3));//每3s 同步日志到文件
auto logger = spdlog::basic_logger_mt("logger", "logs/logtest.txt");
for (int i = 0; i < 10; i++)
{
logger->debug("test log {}", i);
logger->info("test log {}", i);
logger->warn("test log {}", i);
//Sleep(30);
}
logger->debug("333333");
结果:
输入路径默认相对于项目,有心的朋友会发现,这里debug的日志没打出来,因为//set_level(spdlog::level::debug);这一句被注释掉了,这里是设置打印的等级,默认是info,下图取自common.h,可以看到枚举的值:
当我们设置set_level为debug的时候,才会打开debug以及以上的日志,这点对于我们调试很重要。
结论
其实官方还有一些异步的用法,多种日志使用方式,大家可以自行到git上有文档可以学习,我这里暂时没用到。就不讲了。但是总的来说,过程很简单,使用很便捷是我最大的感受。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)