在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 等等。

相关推荐
To_OC8 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
金銀銅鐵12 小时前
[Python] 扩展欧几里得算法
python·数学·算法
To_OC14 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
郝学胜_神的一滴19 小时前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
To_OC1 天前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin2 天前
lk每日冒险题--数据结构6.27
算法
To_OC2 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安3 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法