2

我正在使用一个名为 spdlog 的库进行日志记录。我想围绕库构建自己的 Logger,以便可以选择添加特定于我的应用程序的“额外”功能。

我能够使以下代码正常工作:

#include <spdlog/spdlog.h>

int main()
{
  spdlog::log(spdlog::level::level_enum::info, "this is an info message");
  return 0;
}

如您所见,日志级别可通过命名空间为spdlog::level::level_enum.

我可能过于复杂了,但是如果我创建自己的 Logger 类,我是否必须期望使用我的记录器的类在其日志记录函数调用中输入整个枚举的命名空间?

4

2 回答 2

8

但是如果我创建自己的 Logger 类,我将不得不期望使用我的记录器的类在其日志记录函数调用中输入整个枚举的命名空间

这是您可以使用的地方using。就像是:

using info = spdlog::level::level_enum::info;

这将防止您每次需要使用它时都输入整个内容。您只需要使用它info

于 2020-01-22T20:56:45.790 回答
0

如果我创建自己的 Logger 类,我是否必须期望使用我的记录器的类在其日志记录函数调用中键入整个枚举的命名空间?

我建议您的类定义自己的info值,然后在需要时在内部将其映射到 spdlog 的info值。spdlog 是类内部的实现细节,因此不要将 spdlog 暴露在类之外,如果可以提供帮助,请将其隐藏。如果您愿意,这还允许您在将来更换另一个记录器库,而不会破坏使用您的类的代码。

于 2020-01-22T21:38:06.633 回答