ログの重大度が異なる複数のストリームを持つロガーを作成しようとしています。
class Logger{
public:
std::ostream& errStream;
std::ostream& warnStream;
}
このようにして、ストリームをそのまま使用できます。
Logger L;
L.errStream << "This is an error message.";
L.warnStream << "This is a warning message.";
問題は、各ストリームの operator<< を個別にオーバーロードするにはどうすればよいかということです。つまり、どのストリームに書き込まれるかに基づいて、さまざまなアクションを実行したいということです。
それが役立つ場合は、引数として std::string を取る errWrite と warnWrite のメンバー関数が既にあります。
void errWrite(std::string);
void warnWrite(std::string);
これらを使用するには、次のようにします。
Logger L;
L.errWrite("This is an error message.");
L.warnWrite("This is a warning message.");
これらの問題は、私のコードが既に満たされている std::cout と std::cerr の代わりにドロップされないことです。既存のコードに簡単にドロップできるものを開発しようとしていました。したがって、最終的には次のいずれかが必要です。
- 異なるメンバーに対して個別に演算子をオーバーロードする方法。
- 私がやろうとしていることに対する代替アプローチ。
ありがとう。