2017-09-23 22 views
0

カスタマイズされたcoutを作成する簡単な例を誰でも得ることができます。コンソールで印刷して文字列をsyslogに同時に送信するMyCoutクラスがあります。coutをコンソールとsyslogに同時に送信する方法

MyCout myCout 

myCout << "Test" << endl; 

コンソール出力 "テスト"と "テスト"がsyslogに送信される必要があります。

+7

これは簡単ではありません。しばしば、 'stringstream'で出力を構築し、最終結果を' cout'と 'syslog'の両方に出力することを選択しました。 –

+0

FYI:通常、* stdoutに送信された出力は* console *に送信されません。ユーザーは、どこからでも自由に出力をリダイレクトできます。コンソール上に* insist *したい場合は、ttyに直接書き込む必要があります(実際にはプロセスに1つがあると仮定します)。おそらくcursesライブラリを使うようなものでしょう。 –

答えて

-1

自明な解(Cスタイルの文字列でのみ動作します):

#include <iostream> 
using namespace std; 

void syslog(const char* msg) { 
    std::cout << "syslog " << msg; 
} 

struct MyCout { 
    void operator<< (const char* rhs) { 
     std::cout << rhs << "\n"; 
     syslog(rhs); 
    } 
}; 

int main() { 
    MyCout myCout; 

    myCout << "Test"; 
    return 0; 
} 

あなたは出力に異なるまたはカスタムタイプをwan't場合、それははるかに複雑者を取得します。

関連する問題