概述
项目中需要记录log以及读写json,对比后选择了spdlog以及rapidjson。
SPDLog
对于log只是要求能够记录到文件中以及能够过滤,选择spdlog是因为这个只需要包含头文件即可使用,不依赖第三方库,使用简单,而且功能全面,至少足够目前使用。
用法:
下载【https://github.com/gabime/spdlog】文件后拷贝到项目工程目录,直接include即可。
1 std::shared_ptr<spdlog::logger> logger; 2 logger = spdlog::basic_logger_mt("basic_logger", "DLLLog.txt"); 3 logger->set_level(spdlog::level::debug); 4 logger->info("Start DLL");
有若干个level,
enum level_enum { trace = 0, debug = 1, info = 2, warn = 3, err = 4, critical = 5, off = 6 };
通过set_level进行过滤,只会显示超过setlevel 的log。
Rapidjson
也是不依赖第三方库的,只需要下载后#include后就可使用。
用法:
下载【https://github.com/Tencent/rapidjson/】,#include,然后就可以使用。
主要用来读写json文件,而读写文件也是通过转换为一个jsonstring来做的,即读取文件到一个string,然后操作该string解析为document,需要写入时候将Document序列化为一个string,将该string写入到文件。
rapidjson::Document ToolBox::ReadJsonFromFile(const std::string& filename) { rapidjson::Document ret; ifstream ifs(filename); string jsonstr = ""; string line; if (ifs) { while ((getline(ifs, line))) { jsonstr += line; } } ret.Parse(jsonstr.c_str()); ifs.close(); return ret; }
int ToolBox::WriteDocumentToFile(const rapidjson::Document& sourcedata, const std::string& filename) { int ret = 0; ofstream ifs(filename); if (!ifs) { ret = -1; return ret; } string jsonstr = ""; StringBuffer buffer; Writer<StringBuffer> writer(buffer); sourcedata.Accept(writer); jsonstr = buffer.GetString(); ifs << jsonstr; ifs.close(); return ret; }
得到document后可以通过HasParseError()验证是否解析出错,通过HasMember("XXX")检验是否有该成员,有了就可以操作。需要注意的是如果要修改值,变量不能直接赋值,需要下面方式实现:
d["XXX"].SetString(StringRef(this->XXX.c_str()));
转载于:https://www.cnblogs.com/youdias/p/9436208.html
最后
以上就是悦耳马里奥为你收集整理的spdlog&rapidjson 使用记录的全部内容,希望文章能够帮你解决spdlog&rapidjson 使用记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复