Чтобы разработать кросс-платформенный клиент системного журнала, я пытаюсь сделать это без использования системного вызова системного журнала.Я разрабатываю этот клиент на 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, я был бы очень благодарен, потому что я действительно не понимаю, почему.
Еще раз спасибо.