cornsea

直接和rsyslogd 通信写log

rsyslogd 是通过socket与客户端进行消息交换的。默认socket文件是/dev/log。

另外rsyslogd默认是采用DGRAM的socket模式.

下面代码是一个可以写log的程序。

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/time.h>
#include <string.h>
#include <netinet/in.h>

static struct sockaddr_un logAddr;
char *buf = "helloworld";
int main(void)
{
        int file;
        logAddr.sun_family = AF_UNIX;
        strncpy(logAddr.sun_path, "/dev/log", sizeof("/dev/log"));
        file = socket(AF_UNIX, SOCK_DGRAM, 0);
        connect(file, (struct sockaddr *)&logAddr, sizeof(logAddr));
        send(file, buf, 12, 0);
        close(file);
        return 0;
}

posted on 2010-05-13 22:38  cornsea  阅读(1307)  评论(0编辑  收藏  举报

导航