0

我正在使用 spdlog 记录所有消息。我的日志模式是 JSON 格式。我在所有日志调用中手动转义消息。有没有办法在 spdlog 层自动转义消息?

手动转义示例:

spdlog::info(escape_message(data));

它应该在 spdlog 层内自动处理:

spdlog::info(data);
4

2 回答 2

2

告诉 spdlog 格式化单个字符串,而不是将字符串本身解释为格式字符串:

spdlog::info("{}", data);
于 2019-10-04T15:53:05.347 回答
0

我找到了解决它的方法。

我应该实现一个自定义formatter类,然后在format方法中,我通过例如转义消息,然后在该方法中escape_message(msg.payload.data())调用spdlog::log(msg.source, msg.level, escape_message(msg.payload.data())),spdlog::info或 ...。

注意:在format方法内我设置了一个日志模式,因为在类之外,如果我调用set_formatter,然后调用set_pattern,效果不好。

于 2019-10-04T10:47:30.030 回答