5

我正在学习 linux 编程并想做以下事情。我想创建一个像 syslog 一样工作的迷你记录器。我希望能够替换 syslog(不是在实践中,只是为了了解每个级别的工作方式)。

所以在我的代码中,我会写

#include "miniLogger.h"

....
....
miniLogger(DEBUG, "sample debug message");

----
----

现在,我猜我需要某种守护进程来监听来自我的 miniLogger 的传入消息,而我没有使用守护进程的经验。您能否指出我正确的方向或快速概述消息如何从我的 API 移动到可配置的目的地。我阅读了手册页,但我需要更多关于 API 如何与守护进程通信的概述。

4

2 回答 2

10

syslogd通过 /dev/log 侦听日志消息,这是一个 unix 域套接字。套接字是面向数据报的,这意味着协议类似于 udp。

您的日志守护程序应该打开套接字,将套接字设置为服务器模式,以写入模式打开一个日志文件,要求收到数据包通知,安全地解析消息,并将它们写入文件。执行 socket io 的重要系统调用在man 7 socket中描述。要在套接字上获得传入数据的通知,您可以使用epoll或 select。

于 2010-11-24T20:37:54.373 回答
1

syslog 通常在 /dev/log 使用 PF_LOCAL 套接字。

于 2010-11-24T20:37:26.060 回答