Следующий код отправляет сообщение в файл / var / log / syslog.
У меня есть удаленный сервер, который прослушивает порт 514 (rsyslog).
Есть ли способ изменить этот код, чтобы он отправлял сообщение на удаленный сервер?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
int main(int argc, char *argv[])
{
openlog ("Engine", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog(LOG_NOTICE,"***Example***");
}
Насколько мне известно, использование openlog и syslog, как вы описываете, будет входить на сервер, настроенный в syslog.conf, поэтому вы не можете указать сервер так, как вам хочется. Вы можете настроить удаленный сервер в syslog.conf, и это должно работать.
Если вы не хотите этого делать, вам нужно либо использовать библиотеку, которая поддерживает системный журнал, в качестве приемника, либо вам нужно реализовать свой собственный — что не очень сложно.
Других решений пока нет …