是否可以访问BOOST_LOG_TRIVIAL使用的底层流实例?
我试图让BOOST单元测试框架使用BOOST_LOG_TRIVIAL(我已配置为在文件和std::clog中写入)编写输出
auto&Log_stream = ??//BOOST_LOG_TRIVIAL流实例boost:: unit_test:: unit_test_log.instance () .set_stream (log_stream);
是否可以访问BOOST_LOG_TRIVIAL使用的底层流实例?
不,它不是。在内部,Boost.Log中的默认接收器(由BOOST_LOG_TRIVIAL
使用,除非您配置了自己的接收器)甚至不使用流。
我认为,集成Boost的最好方法。Test with Boost.Log是实现你自己的流缓冲区(一个从std::streambuf
派生的类)。缓冲区必须转换来自Boost的输出。测试到单独的日志记录(例如,通过在换行符上分割它),并通过BOOST_LOG_TRIVIAL
或其他方式将记录传递给Boost.Log。然后,您可以创建一个std::ostream
对象来引用您的流缓冲区并将其传递给Boost。Test into set_stream
.