我可以访问 BOOST_LOG_TRIVIAL 使用的流实例吗?

Can I access the stream instance used by BOOST_LOG_TRIVIAL?

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

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

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

Is it possible to access the underlying stream instance used by BOOST_LOG_TRIVIAL?

不,不是。在内部,Boost.Log 中的默认接收器(由 BOOST_LOG_TRIVIAL 使用,除非您配置自己的接收器)甚至不使用流。

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