如何转义 spdlog 消息?

How to escape spdlog message?

我正在使用 spdlog 记录所有消息。我的日志模式是 JSON 格式。我在所有日志调用中手动转义消息。有什么方法可以在 spdlog 层自动转义消息吗?

手动转义示例:

spdlog::info(escape_message(data));

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

spdlog::info(data);

我找到了解决方法。

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

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

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

spdlog::info("{}", data);