0

是否可以访问 BOOST_LOG_TRIVIAL 使用的底层流实例?

我正在尝试使用 BOOST_LOG_TRIVIAL 让 BOOST 单元测试框架写入输出(我已将其配置为写入文件和 std::clog)

自动& log_stream = ??? // BOOST_LOG_TRIVIAL 流实例 boost::unit_test::unit_test_log.instance().set_stream(log_stream);

4

1 回答 1

1

是否可以访问 BOOST_LOG_TRIVIAL 使用的底层流实例?

不,这不对。BOOST_LOG_TRIVIAL在内部,除非您配置自己的接收器,否则Boost.Log 中的默认接收器甚至不使用流。

我认为,将 Boost.Test 与 Boost.Log 集成的最佳方法是实现自己的流缓冲区(派生自 的类std::streambuf)。缓冲区必须将来自 Boost.Test 的输出转换为单独的日志记录(例如,通过在换行符处拆分它)并通过BOOST_LOG_TRIVIAL或其他方式将记录传递给 Boost.Log。然后,您可以创建一个std::ostream引用您的流缓冲区的对象并将其传递给 Boost.Test 到set_stream.

于 2016-11-05T10:33:47.110 回答