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

相关推荐
高亦真17 小时前
今天是学习嵌入式的第39天
linux·学习·算法
Brilliantwxx17 小时前
【STM32】 SPI阻塞式通信与HAL源码(串口读ID实战)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
Omics Pro17 小时前
AI药物研发10原则!欧盟EMA×美国FDA
数据库·人工智能·算法·机器学习·自然语言处理
吠品17 小时前
Nginx负载均衡配置与线上故障排查的一些经验
java·开发语言·数据库
小小龙学IT17 小时前
Qt QPainter 2D 绘图系统深度解析:从画笔到渲染引擎适
c++·qt
边境悍匪17 小时前
蜗牛学苑 Java 智能体学习 Day44|Vue 前端项目搭建 思维导图复盘
java·开发语言·spring boot·学习·阿里云
wabs66617 小时前
关于二叉树【力扣100.相同的树的思考】
数据结构·c++·算法·leetcode·二叉树·递归法
知知之之17 小时前
敏感数据查询:SHA-256 还是 HMAC-SHA256
算法
wuyk55517 小时前
Python实战项目01:简易记事本系统
开发语言·python
小小龙学IT18 小时前
Boost.PFR 开源结构体字段反射库深度解析
c++·开源