Как избежать spdlog сообщения? - PullRequest
0 голосов
/ 04 октября 2019

Я использую spdlog для регистрации всех сообщений. Мой шаблон журнала в формате JSON. Я экранирую сообщения вручную во всех вызовах журнала. Существует ли какой-либо способ автоматического экранирования сообщений в слое spdlog?

Пример экранирования вручную:

spdlog::info(escape_message(data));

Он должен обрабатываться автоматически внутри слоя spdlog:

spdlog::info(data);

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Скажите spdlog отформатировать одну строку, а не интерпретировать саму строку как строку формата:

spdlog::info("{}", data);
0 голосов
/ 04 октября 2019

Я нашел способ ее решить.

Я должен реализовать пользовательский класс 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, не работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...