Могу ли я получить доступ к экземпляру потока, используемому BOOST_LOG_TRIVIAL?

Возможно ли получить доступ к базовому экземпляру потока, используемому BOOST_LOG_TRIVIAL?

Я пытаюсь, чтобы модуль BOOST модульного тестирования записывал выходные данные, используя BOOST_LOG_TRIVIAL (который я настроил для записи в файл и std :: clog)

авто& log_stream = ??? // BOOST_LOG_TRIVIAL экземпляр потока
повышение :: unit_test :: unit_test_log.instance () set_stream (log_stream).

0

Решение

Возможно ли получить доступ к базовому экземпляру потока, используемому BOOST_LOG_TRIVIAL?

Нет, это не так. Внутренне, приемник по умолчанию в Boost.Log, который используется BOOST_LOG_TRIVIAL если вы не настроили свой собственный приемник, даже не использует поток.

Я думаю, что лучший способ интегрировать Boost.Test с Boost.Log — это реализовать свой собственный буфер потока (класс, производный от std::streambuf). Буфер должен будет преобразовать выходные данные Boost.Test в отдельные записи журнала (например, разделив его на символы новой строки) и передать записи в Boost.Log через BOOST_LOG_TRIVIAL или другие средства. Затем вы можете создать std::ostream объект ссылается на ваш потоковый буфер и передает его в Boost.Test в set_stream,

1

Другие решения

Других решений пока нет …