2013-06-13 2 views
0

Следующий код отправляет сообщение в файл/var/log/syslog. У меня есть удаленный сервер, который прослушивает порт 514 (rsyslog). Есть ли способ изменить этот код, чтобы он отправил сообщение на удаленный сервер?Как отправить сообщение в удаленный syslog с помощью syslog.h

#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***"); 

} 

ответ

0

Насколько мне известно, с помощью openlog и системного журнала, как вы описываете зарегистрирует на сервере, настроенном в syslog.conf, таким образом, вы не можете указать сервер так, как вы хотите. Вы можете настроить удаленный сервер в syslog.conf, и это должно сработать.

Если вы не хотите этого делать, вам нужно либо использовать библиотеку, которая поддерживает syslog как приемник, либо вам нужно реализовать свое собственное, что не очень сложно.

+0

Существует несколько, но большинство из них включает в себя больше, чем просто часть syslog, проект poco - один, вы можете писать свой собственный достаточно быстро, используя библиотеку boost и boost :: asio :: ip :: udp :: socket, другие больше библиотек журнала log4cpp, pantheios, и я также думаю, что google-glog поддерживает syslog. –