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

时间:2016-11-04 14:48:54

标签: c++ boost-log boost-unit-test-framework

是否可以访问BOOST_LOG_TRIVIAL使用的基础流实例?

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

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

1 个答案:

答案 0 :(得分: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