2016-04-04 2 views

答えて

1

これは直接サポートされていません。 Boost.Logはプロセス間同期を行わず、ログファイルを混乱させる他のプロセスは期待していません。

複数のプロセスがログファイルを実際にログファイルを書き込む1つの共通プロセスに送信する、プロセス間のログスキームを実装することは可能です。 syslog backendまたはにsocket-based streamと入力してください。もちろん、カスタムシンクバックエンドの実装も可能です。

0

いいえ、あなたはしたくないでしょう。

最初にプロセス間ファイルロックが必要です。つまり、ログをとろうとしていたすべてのプロセスのすべてのスレッドが、1つのプロセス間ミューテックスですべて同期することになります。パフォーマンス面では、ソフトウェアスタック全体を1つのスレッドで1つのプロセスで作成する方がよいでしょう!

おそらく、あなたが望むものを達成する方法は、ログに専念する1つのプロセスを用意し、そのプロセスにUNIXソケット、名前付きパイプ、またはメッセージバス経由でログメッセージを送信することです。

メッセージがソケット上にある場合は、非同期I/Oを使用してメッセージを送信してください。 UNIXソケットIOは非常に速いので、そこには必要ないかもしれません。

関連する問題