C 对日志文件的多次写入访问(linux env)

C multiple write access to a log file (linux env)

我有一组用 C 编写的独立程序。我希望它们都将日志写入同一个文件。显然是控制访问的问题。他们中的两个或更多人最终可能会同时写作。

实现这一目标最实用的方法是什么?

我遇到了使用 pthread/mutexes/etc 的解决方案,但对于类似的东西来说,这听起来有点矫枉过正。

我也在查看系统日志,但想知道这是否真的是为了我需要做的事情?

我觉得我需要一个守护进程服务来接收消息并在它们被写入时进行控制。我想知道它是否已经存在。

I am also looking at syslog but wonder if this is really for the purpose of what I need to do?

I feel that I need a daemon service taking the message and control when they are written. I wonder if that already exists.

它存在于Unix衍生版本中(包括Linux),被称为...syslogd

更严重的是,syslog 函数旨在将消息传递给 syslogd 守护进程,该守护进程将根据其配置文件路由消息。最常见的用途包括将其写入文件或系统控制台(特别是当没有人可以确定文件系统是否仍可访问时的恐慌级别消息)。系统日志系统可能具有比您要求的更多的功能,但它是一个非常强大且经过广泛测试的软件。此外,它肯定已经在您的系统上处于活动状态,因此您应该有充分的理由自己推出而不是使用它。

你有两种方式:

第一:使用已经存在的东西。 对于日志记录部分,syslog(和 syslog-ng)是广为人知和广泛使用的。

从那时起,您可以参数化 syslog-ng 以侦听 ip 连接,并扫描目录以查找新文件。

您的程序可以在需要记录时直接连接到 syslogng 并发送日志,如果连接失败,则在 syslogng 监视的目录中写入一个新文件。 允许不丢失日志的是 syslog-ng 由于某种原因而中断。

其次:开发与 syslog-ng 非常相似的东西。 在这种情况下,由您决定。