0

我想根据记录的位置向我的日志输出添加一些额外的数据。例如,我可能有系统 A 和系统 B,都吐出日志数据,但也许我现在只对系统 B 的日志行感兴趣,所以我可以根据标签进行过滤。

在以前的系统中,我有一个看起来像 LOG(level, tag, message) 的日志函数,但我也可以看到一个解决方案,该解决方案可能涉及为每个系统实例化一个带有标签的记录器,该标签将通过管道传输到捕获所有消息的默认记录器. 所以 spdlog::tagged_logger systemALogger("System A");

这几乎是答案,因为记录器可以有名称,我可以使用名称作为标签,但是记录器可以重定向到默认记录器吗?默认记录器有几个接收器,我必须将它们附加到命名的记录解决方案。

所以最后一个问题是,有没有办法在 spdlog 中添加自定义标签来记录消息?

4

1 回答 1

1

配置好日志后,您可以对其进行 clone() 并传递将出现在日志输出中的自定义记录器名称(假设您没有更改格式)。

  auto logger = spdlog::default_logger()->clone("my_logger");
  logger->info("message from custom logger");
  spdlog::info("message from default logger");

basic-log.txt的内容如下:

[2020-12-02 09:35:58.801] [my_logger] [info] message from custom logger
[2020-12-02 09:35:58.802] [info] message from default logger
于 2020-12-02T08:38:58.060 回答