直接和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; }
转载请注明出处