boost::log 多进程
boost::log with multi-process
我问了一个关于如何在多进程中使用boost::log的问题
这个答案可以解决大部分问题。但是在极少数情况下,当一个进程正在写日志而另一个进程开始写日志时,
13548:Tue Nov 30 17:33:41 2021
12592:Tue Nov 30 17:33:41 2021
13548:Tue Nov 30 17:33:41 2021
12592:Tue Nov 30 17:33:4572:Tue Nov 30 17:33:41 2021
17196:Tue Nov 30 17:33:41 2021
8572:Tue Nov 30 17:33:41 2021
17196:Tue Nov 30 17:33:41 2021
8572:Tue Nov 30 17:33:41 2021
第四行17:33:4(1 2021)
后面的部分被(8)572:Tue Nov
擦除,被其他进程写入
如何防止这种情况发生?
Boost.Log 不同步写入同一文件的多个进程。您必须有一个进程将日志写入文件,而其他进程将它们的日志记录传递给编写器。有多种方法可以实现这一目标。例如,您可以将日志传递给 syslog service or writing your own log writer process. In the latter case, you can use inter-process queue 以在进程之间传递日志消息。
或者,您可以 write your own sink backend 这将在写入共享文件时执行同步。但是,我怀疑性能会低于单个日志写入进程。
我问了一个关于如何在多进程中使用boost::log的问题
这个答案可以解决大部分问题。但是在极少数情况下,当一个进程正在写日志而另一个进程开始写日志时,
13548:Tue Nov 30 17:33:41 2021
12592:Tue Nov 30 17:33:41 2021
13548:Tue Nov 30 17:33:41 2021
12592:Tue Nov 30 17:33:4572:Tue Nov 30 17:33:41 2021
17196:Tue Nov 30 17:33:41 2021
8572:Tue Nov 30 17:33:41 2021
17196:Tue Nov 30 17:33:41 2021
8572:Tue Nov 30 17:33:41 2021
第四行17:33:4(1 2021)
后面的部分被(8)572:Tue Nov
擦除,被其他进程写入
如何防止这种情况发生?
Boost.Log 不同步写入同一文件的多个进程。您必须有一个进程将日志写入文件,而其他进程将它们的日志记录传递给编写器。有多种方法可以实现这一目标。例如,您可以将日志传递给 syslog service or writing your own log writer process. In the latter case, you can use inter-process queue 以在进程之间传递日志消息。
或者,您可以 write your own sink backend 这将在写入共享文件时执行同步。但是,我怀疑性能会低于单个日志写入进程。