是否可以访问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_TRIVIAL使用的Boost.Log中的默认接收器甚至不会使用流。

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

关于c++ - 我可以访问BOOST_LOG_TRIVIAL使用的流实例吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40425574/

10-11 22:10
查看更多