2011-10-18 3 views
1

크로스 플레이트 폼 syslog 클라이언트를 개발하기 위해 syslog syscall을 사용하지 않고이를 수행하려고합니다. 나는이 클라이언트를 C++로 개발 중이며 현재는 Linux으로 테스트 중이다. 대체 할 이전 syslog 클라이언트는 syslog 시스템 호출로 완벽하게 작동했습니다. 어떻게 작동하는지 간단하게 알 수 없습니다. 추적은 /var/log/user.log과 같지 않습니다. 어느 곳에서든지 (grep). 하지만 오른쪽 포트에서 netcat으로 수신하면 수신합니다. 도중에도 514 포트를 이미 사용해야합니까?Linux - Syslog 클라이언트

추적 내용은 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은 (내 로그 서버)가 제대로 UDP/514에서 수신하지 않습니다.

사람이 여전히 UDP/514에서 수신하지 않는 이유의 어떤 생각을 가지고 있다면
$ModLoad imudp 
$UDPServerAddress 0.0.0.0 
$UDPServerRun 514 

/etc/rsyslog.conf, 내가 정말 왜 표시되지 않습니다 정말 thanksful 원인이 될 것입니다.

다시 한 번 감사드립니다.

답변

1

syslog() 호출은/dev/log에 쓰고 시스템 로그 프로그램은이 unix 도메인 소켓을 읽어 메시지를 선택합니다. UDP/514는 네트워크 전송 용입니다. 그래서 당신이 원하는 것이 분명하지 않습니다.

+0

답변 해 주셔서 감사합니다. 당신 말이 맞아요. 글쎄, 나는 단순히 원격 클라이언트와 함께 작동하도록 syslog 서버를 잘못 구성했다고 생각한다. UDP/514에서 기본 동작이 아닌 것처럼 들리게해야합니다. – Rippalka