我正在使用 spdlog 记录所有消息。我的日志模式是 JSON 格式。我在所有日志调用中手动转义消息。有没有办法在 spdlog 层自动转义消息?
手动转义示例:
spdlog::info(escape_message(data));
它应该在 spdlog 层内自动处理:
spdlog::info(data);
告诉 spdlog 格式化单个字符串,而不是将字符串本身解释为格式字符串:
spdlog::info("{}", data);
我找到了解决它的方法。
我应该实现一个自定义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
,效果不好。