是否可以访问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 :(得分: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
。