2010-11-24 4 views
5

나는 리눅스 프로그래밍을 배우고 있으며 다음을 원한다. syslog처럼 작동하는 미니 로거를 만들고 싶습니다. 나는 syslog를 대체 할 수 있기를 원한다. (실제로는 아니지만 모든 레벨에서 일이 어떻게 작동 하는지를 이해해야한다.) 리눅스 시스템 로그는 어떻게 작동합니까?

그래서 내 코드에서, 나는 지금

#include "miniLogger.h" 

.... 
.... 
miniLogger(DEBUG, "sample debug message"); 

---- 
---- 

를 작성합니다 나는 내 miniLogger에서 들어오는 메시지를 수신하는 데몬의 일종 필요 추측하고 내가 데몬과 경험이 없다. 올바른 방향으로 나를 알려주거나 메시지가 내 API에서 구성 가능한 대상으로 이동하는 방법에 대한 간략한 개요를 제공 할 수 있습니까? 맨 페이지를 읽었지만 API가 데몬과 일반적으로 어떻게 통신하는지에 대한 개요가 더 필요합니다.

답변

8

syslogd은 유닉스 도메인 소켓 인/dev/log를 통한 로그 메시지를 수신 대기합니다. 소켓은 데이터 그램 지향이며 프로토콜이 udp와 유사 함을 의미합니다.

로그 데몬은 소켓을 열고 소켓을 서버 모드로 설정하고 쓰기 모드로 로그 파일을 열고 패킷 알림을 받고 메시지를 안전하게 구문 분석 한 다음 파일에 기록해야합니다. 소켓 io를 수행하는 중요한 시스템 호출은 man 7 socket에 설명되어 있습니다. 소켓에서 들어오는 데이터를 알리려면 epoll을 사용하거나을 (를) 선택할 수 있습니다.

+0

정말 고마워. 나는 이제 내 주말에이 일을하도록 정했다. 귀하의 명확하고 관련성 있고 적절한 설명에 다시 한 번 감사드립니다. – Andrew

+0

syslogd는 원격 로깅을 위해 TCP 또는 UDP 포트 514 (전통적으로 UDP, 일부 최신 syslog 데몬도 TCP 지원)에서 수신 대기 할 수 있습니다. – ninjalj

1

syslog는 일반적으로/dev/log에서 PF_LOCAL 소켓을 사용합니다.

관련 문제