实现C++多进程日志记录的最佳方法

3
我在寻找一种实现多进程日志记录的机制(跨平台解决方案,适用于 Windows 和 Linux)。目前,我只看到一种方法 - 使用带锁定的日志文件。锁定 - 写入,解锁。
但也许有人知道更好的方法?

需要在同一文件中记录多个进程的日志输出吗? - Andreas Fester
能否登录到数据库? - BigMike
首先要寻找支持此功能的框架。例如,像日志记录这样的功能应该使用现成的组件。 - Thirler
在不同的操作系统中记录一个文件是一个很困难的要求,因此您需要在网络中设置一个日志服务器。仅仅进行锁定/解锁是不够的。 - harper
2个回答

2
创建一个日志应用程序,并通过TCP套接字将日志条目发送到其中。

2

好的伙伴是生产者/消费者。

每个线程都在列表中排队。一个线程消费这个列表并将其写入文件。


我考虑了一下,只看到一个潜在的问题 - 内存。这应该是共享的,而且我们有限制。如果某个应用程序产生了很多日志条目,则日志应用程序没有足够的内存来消耗它,一些日志条目将会丢失或被覆盖。 - Torsten
@Torsten 是的,但无论如何您都会遇到这个问题。如果在套接字中排队,则是相同的问题。但是,您可以使用某种自适应采样策略来处理该问题。例如,如果您接近队列的边界限制,则开始仅将 x% 的日志加入队列。 - log0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接