私は非常に単純なロギングライブラリに納得のいくインターフェイスを書いています。次の2つのコードを読んでください。最初のものは、私が今何をすべきかである、もう一つは、直感的なインターフェイスのための私の考えです:iostreamのようなインターフェイスをロギングライブラリに書き込む方法は?
std::ostringstream stream;
stream<<"Some text "<<and_variables<<" formated using standard string stream"
logger.log(stream.str()); //then passed to the logger
そして
logger.convinient_log()<<"Same text "<<with_variables<<" but passed directly";
そのアイデアの背後にある私の思考の設計プロセスは、一時的なのいくつかの種類を返すことですストリングストリームのようなオブジェクトからlogger.convinient_log()
機能。破滅の目的(私はそれが行の終わりまたは同様の、convinient場所で起こることを望む)自体から文字列を収集し、実際のlogger.log()
を呼び出します。要点は、log()で追加できるように、term-by-termではなく全体を処理したいということです。接頭辞とsufixをテキスト行全体に適用します。
私は非常にうまくいきます。何か重い魔法がなければ、それはまったく不可能で不可能かもしれません。そうであれば、それを実現するためのほぼ納得のいく方法とそれを実装する方法は何でしょうか?私はcollect-call-logger.log()
の操作を強制する特別な変数を渡すことに賭ける。
正確な答えがわからない場合は、トピックのリソース(例:ストリングストリームの拡張)も歓迎します。
の可能性のある重複(http://stackoverflow.com/questions/511768/ – user4581301
ほとんど重複していますが、私は何か違うものを求めています:私は1つの 'convinient_log()'の全入力を一度に処理したいのであって、一度に処理したくはありません一本ずつ。 「幸運」と言えば、ソリューションの実装と同様の納得された点で、より優れたソリューションはありますか?私も本当に感謝するでしょう:) – psorek