stderrを使用してエラーを出力しているサードパーティのライブラリを使用していますが、ロギングのコールバックがありません。Linuxdaemon呼び出しを使用して、プロセスのデーモンを作成しています。
デーモン呼び出し後にstderrをファイルに設定する方法はありますか?
システムコールを使用しopenてファイルを開き、次の手順を実行しますdup2(filefd, 2)。stderr開いたファイルに設定されます。その後、できclose(filefd)ます。openを呼び出す前に行うことはできますが、を呼び出すまでは、以降daemonはお勧めしません。dup2closedaemon
サードパーティライブラリを使用するコードでは、stderrストリームを「再ルーティング」できます。
例:次のようなもの
std::ofstream outputFileStream;
outputFileStream.open ("outputfile.txt");
std::streambuf * yourStreamBuffer = outputFileStream.rdbuf();
std::cerr.rdbuf(yourStreamBuffer);
std::cerr << "Ends up in the file, not std::cerr!";
outputFileStream.close();