Возможно ли получить доступ к базовому экземпляру потока, используемому BOOST_LOG_TRIVIAL?
Я пытаюсь, чтобы модуль BOOST модульного тестирования записывал выходные данные, используя BOOST_LOG_TRIVIAL (который я настроил для записи в файл и std :: clog)
авто& log_stream = ??? // BOOST_LOG_TRIVIAL экземпляр потока
повышение :: unit_test :: unit_test_log.instance () set_stream (log_stream).
Возможно ли получить доступ к базовому экземпляру потока, используемому 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
,
Других решений пока нет …