繁体   English   中英

boost::log 多进程

[英]boost::log with multi-process

我曾经问过一个关于如何在多进程中使用 boost::log 如何使用 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服务或编写自己的日志写入器进程。 在后一种情况下,您可以使用进程间队列在进程之间传递日志消息。

或者,您可以编写自己的接收器后端,该后端将在写入共享文件时执行同步。 但是,我怀疑性能会低于具有单个日志写入进程的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM