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

相关推荐
jieyucx1 小时前
Go 语言进阶:结构体指针、new 关键字与匿名结构体/成员详解
开发语言·后端·golang·结构体
图码1 小时前
生命游戏的优雅解法:从O(mn)空间到O(1)空间的进阶之旅
数据结构·算法·游戏·矩阵·空间计算
wjs20241 小时前
jEasyUI 添加复选框指南
开发语言
迪霸LZTXDY1 小时前
U-NET模型训练--图像标注脚本工具
开发语言·python
码界筑梦坊1 小时前
119-基于Python的各类企业排行数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·fastapi
习明然2 小时前
记录下解决Python在windows 2008 Server 无法启动
开发语言·windows·python
凯瑟琳.奥古斯特2 小时前
IP组播跨子网传输核心技术解析
java·开发语言·网络·网络协议·职场和发展
蜡笔小马2 小时前
09.C++设计模式-外观模式
c++·设计模式·外观模式
2301_800895102 小时前
蓝桥杯第十二届b组国赛真题--备战国赛版h
算法·蓝桥杯