0

BOOST_LOG_TRIVIAL によって使用される基になるストリーム インスタンスにアクセスすることは可能ですか?

BOOST_LOG_TRIVIAL (ファイルと std::clog に書き込むように構成した) を使用して、BOOST 単体テスト フレームワークに出力を書き込もうとしています。

auto& log_stream = ??? // BOOST_LOG_TRIVIAL ストリーム インスタンス boost::unit_test::unit_test_log.instance().set_stream(log_stream);

4

1 に答える 1

1

BOOST_LOG_TRIVIAL によって使用される基になるストリーム インスタンスにアクセスすることは可能ですか?

いいえ、ちがいます。内部的には、Boost.Log の既定のシンクはBOOST_LOG_TRIVIAL、独自のシンクを構成しない限り使用されますが、ストリームも使用しません。

Boost.Test と Boost.Log を統合する最善の方法は、独自のストリーム バッファ (から派生したクラスstd::streambuf) を実装することだと思います。バッファーは、Boost.Test からの出力を個別のログ レコードに変換し (改行文字で分割するなど)、BOOST_LOG_TRIVIALまたはその他の方法でレコードを Boost.Log に渡す必要があります。その後、ストリーム バッファを参照するオブジェクトを作成し、std::ostreamそれを Boost.Test into に渡すことができますset_stream

于 2016-11-05T10:33:47.110 に答える