在C++中不用宏怎么打日志的使用建议

使用建议

从上面的使用可以看出,std::source_location 可以以函数的形式进行调用,从而避免了使用宏所产生的一些弊端。

但是由于使用的方式一般是以默认参数进行的,因此不是适合变参的情况,除非在外部传入 std::source_location::current(),这一定程度上限制了使用。

应用场景举例

假设在我们封装了一个 IO 的操作类,并封装了一层形如 size_t write(const char* msg, size_t len); 的函数,用来发送数据。

在开发过程中常常希望看到一些调用的情况。一般来说我们可以在外部调用时,先自行打印 msg,并获取返回值后再打印结果。这些操作非常简单,更重要的是使用的非常频繁。

当我们再项目中不断打印这些数据的时候,若不及时删除,则会出现洪水般的日志信息,这些信息可能由于不同开发者的风格不通用,难以跨文件删除或屏蔽,使得给后期开发增加了不必要的麻烦。

而将 write 函数改为 size_t write(const char* msg, size_t len, const std::source_location location = std::source_location::current()); 则可以在 write 内部,以统一的方式进行日志的打印和,输出流的监控。提升了一定的开发效率。

知名的开源 log 库

最后,这里介绍一些知名的开源日志库,这些库大都比较成熟,大家可以直接使用:spdlog,glog,Boost Log,log4cxx,Poco Logger 等等。

相关推荐
键盘会跳舞5 分钟前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue
YuforiaCode1 小时前
第十六届蓝桥杯 2025 C/C++组 数列差分
c语言·c++·蓝桥杯
QAQo7T1 小时前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
千里之行,始于足下sanhai1 小时前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划
小星星闪亮登场1 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
计算机小白一个1 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯
Loge编程生活1 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
在世修行2 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#
sunburn-2 小时前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
AI直播技术杂谈2 小时前
AI直播推流链路中延迟优化的通用技术方案
开发语言·人工智能·php