是否可以访问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/