提升日志-不同的进程到一个日志文件

Boost log - Different processes to one log file?

本文关键字:日志 一个 文件 进程      更新时间:2023-10-16

是否可以将来自不同进程(可执行文件)的日志消息写入同一日志文件。在C++(Boost.Log)中使用Boost.Log

这不是直接支持的。Boost.Log不执行进程间同步,也不希望其他进程干扰日志文件。

可以实现进程间日志记录方案,其中多个进程将日志记录发送到实际写入日志文件的一个公共进程。您可以使用syslog后端或使用基于套接字的流的流后端来完成此操作。当然,实现自定义接收器后端也是可能的。

没有,你不会想要的。

首先需要进程间文件锁定,这意味着每个试图记录日志的进程的每个线程都将在一个进程间互斥体上同步。从性能角度来看,最好在一个进程中的一个线程中编写整个软件堆栈!

实现您想要的目标的方法可能是有一个专门用于日志记录的进程,并通过unix套接字、命名管道或消息总线将日志消息发送到该进程。

如果通过套接字,请确保使用异步I/O来发送这些消息。unix套接字IO非常快速,因此您可能不需要它。