26 | Easylogging++和spdlog:两个好用的日志库
该思维导图由 AI 生成,仅供参考
Easylogging++
概述
- 深入了解
- 翻译
- 解释
- 总结
C++日志库Easylogging++和spdlog是两个功能丰富、易于使用的工具。Easylogging++提供了丰富的配置选项,包括启用Unicode支持、多线程支持、性能跟踪功能等,同时还可以通过配置文件来设置日志选项。它还支持记录程序执行的性能数据和崩溃日志。另一个日志库spdlog提供了高性能的日志记录功能,支持多线程环境下的异步日志记录,具有跨平台特性。两者在功能和实现方式上有很大的不同,建议根据实际需要进行选择。spdlog提供了更简单的日志文件切换功能,支持适配用户定义的流输出,可以只使用头文件的方式,也支持预编译的方式。此外,spdlog还提供了多个不同的日志记录器、异步日志记录、输出二进制信息等功能。相比之下,Easylogging++更多地使用了编译时的行为定制,而spdlog主要通过面向对象的方式在运行时修改日志的行为。另外,Easylogging++使用了IO流的方式,而spdlog使用了`std::format`的方式。总的来说,建议在新项目中优先选择spdlog,仅在需要Easylogging++提供而spdlog不提供的功能时才选择Easylogging++。在严肃的项目中,选择哪个日志库是值得认真比较和评估一下的。
《现代 C++ 编程实战》,新⼈⾸单¥59
全部留言(11)
- 最新
- 精选
- 吴先生glog, gflags, gtest 我们的工程里都用这些,可不可以比较一下
作者回复: 你可以跟我的描述比较啊……😎 后面提到的 g3log 就是基于 glog 开发的,但功能、性能都有改进。如果你目前用的觉得够用,是没必要换的。主要是看其他家有没有提供你想要、目前又没有的功能或性能。
2020-01-314 - Geek_power吴老师,您好,我现在多进程使用spdlog。意思就是多进程使用spdlog向同一个文件写日志,会有两条日志串行的情况,spdlog不支持多进程吗?
作者回复: 不支持。你在 spdlog 的网页是可以找到相关信息的: https://github.com/gabime/spdlog/issues/937
2022-02-081 - 陌老师,问一个非常基础的问题: CMakeLists 在工程项目中到底该怎么使用? 如何正确的使用第三方库,例如这里的 spdlog。有例子可以查看吗?
作者回复: 看我的代码示例好了。 https://github.com/adah1972/geek_time_cpp/tree/master/26/spdlog
2021-04-211 - 泰伦卢之前都在用glog,觉得有必要换成spdlog
作者回复: 嗯,spdlog看起来是一个很现代、很好用的库。如果不要求Windows的Unicode支持,是挺好(不过,查了下发现glog也不支持Unicode,所以没有变差)。 另外一个选择是 g3log,接口差不多,性能提高,支持异步。
2020-01-311 - 干尾巴想问一下我专门开一个线程sleep来作为定时执行任务。我可以保证我的这个线程sleep中途不会被唤起。这样有问题吗?
作者回复: 没看懂你的问题所在。请另开问题,清晰提出你担心可能会发生什么问题。
2022-09-24归属地:上海 - 小南spdlog不支持unicode么,那如果需要使用中文字符是不是easyloggoin++更合适
作者回复: 你的中文字符是放在wstring里或wchar_t数组里吗?如果是,那EasyLogging++可能更好些。否则也没啥区别,当成字节流就行。
2021-08-222 - 江波 (Jiang, Bo)有没有日志库能做比较细粒度的性能测量?比如10纳秒级的。spdlog貌似本身的性能开销就在微秒级。
作者回复: 这就不是日志库该干的事了。格式化输出的时间都要超过10纳秒(也就大概30个时钟周期)了吧。I/O就更耗时了。要性能测量,数据肯定是不格式化存内存里,最后再输出。
2021-02-07 - luke有个问题,库用了spdlog,使用这个库的应用也引入了spdlog,造成了冲突,这样怎么解决?库的日志一般怎么处理?
作者回复: 全部用动态链接(SO/DLL)应该没有问题的。
2020-12-233 - Geek5198老师,您好,请问spdlog支持日志过期时间配置然后自动删除的功能吗
作者回复: 看起来目前没有。你需要自己写个 sink 来完成这个功能。
2020-10-26 - 宵练2233nanolog 是我见过的最快以及日志超级小的logger2021-06-291