0
カスタマイズされたcoutを作成する簡単な例を誰でも得ることができます。コンソールで印刷して文字列をsyslogに同時に送信するMyCoutクラスがあります。coutをコンソールとsyslogに同時に送信する方法
MyCout myCout
myCout << "Test" << endl;
コンソール出力 "テスト"と "テスト"がsyslogに送信される必要があります。
カスタマイズされたcoutを作成する簡単な例を誰でも得ることができます。コンソールで印刷して文字列をsyslogに同時に送信するMyCoutクラスがあります。coutをコンソールとsyslogに同時に送信する方法
MyCout myCout
myCout << "Test" << endl;
コンソール出力 "テスト"と "テスト"がsyslogに送信される必要があります。
自明な解(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場合、それははるかに複雑者を取得します。
これは簡単ではありません。しばしば、 'stringstream'で出力を構築し、最終結果を' cout'と 'syslog'の両方に出力することを選択しました。 –
FYI:通常、* stdoutに送信された出力は* console *に送信されません。ユーザーは、どこからでも自由に出力をリダイレクトできます。コンソール上に* insist *したい場合は、ttyに直接書き込む必要があります(実際にはプロセスに1つがあると仮定します)。おそらくcursesライブラリを使うようなものでしょう。 –