2016-11-04 6 views
0

BOOST_LOG_TRIVIALが使用するストリームインスタンスにアクセスすることはできますか?BOOST_LOG_TRIVIALが使用するストリームインスタンスにアクセスできますか?

私は(ファイルとstd ::詰まりに書き込むように、私が設定した)BOOST_LOG_TRIVIALを使用してBOOSTユニットテストフレームワークの書き込み出力を持つようにしようとしている

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

答えて

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にset_streamに渡します。

+0

ありがとうございました。私の独自のプロキシーを実装してくれてありがとうございました。私はこれが一般的なケースである可能性があります。そうではないようです。シンクを使ったドキュメントで簡単に見てきたことからも解決策があり、自分のプロキシは必要ありません。もっとシンクを調査する時間があるかどうかはわかりません。 –

関連する問題