使用记录器进行依赖注入(spdlog)

问题描述 投票:0回答:1

我正在开发一个 C++ 库,该库使用 spdlog 进行某种类型的信息记录。该库可以由 CLI 工具使用,也可以直接由最终用户使用。我希望能够在我不关心日志记录的情况下传递一个空接口实现(例如,对于单元测试或每当我不想包含 spdlog 内容并且不关心日志记录时)。

我想到的唯一解决方案是创建一个围绕 spdlog 函数的包装器(信息/错误/警告/调试)。我尝试这样做,但由于这些是模板化的可变参数函数,我必须将它们设为虚拟才能覆盖它们,所以这是不可能的。

如果我对问题的推理是错误的(将记录器对象传递给不同的模块),你能指导我吗?如果有任何其他解决方案来解决这个问题?

我愿意使用其他日志库,只是我找不到易于包装的库。

c++ logging dependency-injection
1个回答
0
投票

我认为这就是

SPDLOG_ACTIVE_LEVEL
的用途 - 文档

您可以使用它在编译时设置日志记录级别,这应该使相应的函数为空。例如,

SPDLOG_LEVEL_OFF
应该禁用所有日志记录,无论我相信使用的记录器是什么。

© www.soinside.com 2019 - 2024. All rights reserved.