У меня есть функция выполнения, которая принимает параметр std :: ostream в качестве параметра. Я упростил его здесь для целей описания.Как перенаправить ostream в библиотеку журнала Boost
void someprogressbar(std::ostream & stream)
{
stream << "Hello";
}
Я не могу изменить эту функцию, так как это сторонняя функция. Я вызываю эту функцию либо с std::ostringstream myoss; someprogressbar(myoss)
, либо с someprogressbar(std::cout)
. Функция печатает некоторую информацию в режиме реального времени по мере продвижения моей программы.
Как перенаправить вывод в библиотеку Boost Log? Я могу сделать BOOST_LOG_TRIVIAL(debug) << "Hello"
, но не могу сделать someprogressbar(BOOST_LOG_TRIVIAL(debug)))
.
написать аккуратную streambuf (бустерного Iostream Sink) и реализовать его для записи в буфере. (Это, вероятно, уже будет реализовано кем-то) – sehe
Я все еще борюсь с пониманием раковины. Я настраиваю глобальный логгер Boost, который печатает на консоль и несколько файлов. Является ли здесь, что мне нужно подключить этот streambuf? Не могли бы вы указать мне учебник или пример? Я не смог найти пример, который реализует то, что мне нужно. –
Хорошо, я понял, как это решить. Я отправлю ответ позже. –