Linux - клиент системного журнала - PullRequest
1 голос
/ 18 октября 2011

Чтобы разработать кросс-платформенный клиент системного журнала, я пытаюсь сделать это без использования системного вызова системного журнала.Я разрабатываю этот клиент на C ++ и сейчас тестирую на Linux.Старый клиент системного журнала, который я заменяю, прекрасно работал с системным вызовом системного журнала.Как это просто не работает.Трасса находится не в /var/log/user.log, как должно быть, ни где-либо еще (grep ed).Но я получаю его, когда слушаю правильный порт с netcat.Разве порт 514 уже не используется, кстати?

Трассировка такая, как она должна быть отправлена ​​на UDP/514.Я пытался прикрепить RFC 3164, но что-то явно не так.

Буду очень признателен, если кто-нибудь подскажет мне, как это решить.

Trace: severity: 2 (Critical); facility: 23 (Local Use 7) ==> priority: 186

sh$> sudo nc -ul localhost -p 514
  <186>Oct 18 10:36:03 hostname test_trace: | 10:36:03.242995 | CRIT  | xxx-MAIN[5473-000] | 00000 | 0008 : main : user_msg

Спасибо!


Я думаю, что нашел проблему в своем собственном вопросе: Rsyslog (мой сервер syslog) неправильно прослушивает UDP / 514.

/ etc / rsyslog.conf

$ModLoad imudp
$UDPServerAddress 0.0.0.0
$UDPServerRun 514

Если кто-то знает, почему он все еще не слушает UDP / 514, я был бы очень благодарен, потому что я действительно не понимаю, почему.

Еще раз спасибо.

1 Ответ

1 голос
/ 18 октября 2011

Вызов syslog () записывает в / dev / log, и системный регистратор считывает этот сокет домена unix, чтобы получить сообщение.UDP / 514 для передачи по сети.Так что не понятно, чего ты хочешь.

...