2010-11-24 10 views
5

Estoy aprendiendo la programación de Linux y quiero hacer lo siguiente. Me gustaría crear un mini-registrador que funcione como syslog. Quiero ser capaz de reemplazar syslog (no en la práctica, sino simplemente para comprender en todo nivel cómo funcionan las cosas).¿Cómo funciona el syslogger de Linux?

Así que en mi código, me gustaría escribir

#include "miniLogger.h" 

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

---- 
---- 

Ahora, estoy adivinando que iba a necesitar algún tipo de demonio para escuchar los mensajes entrantes de mi miniLogger y no tengo ninguna experiencia con los demonios. ¿Puede señalarme en la dirección correcta o darme una visión general rápida de cómo los mensajes pueden pasar de mi API a un destino configurable? Leo las páginas Man, pero necesito más información general sobre cómo las API se comunican con los daemons en general.

Respuesta

8

syslogd escucha los mensajes de registro en/dev/log, que es un socket de dominio de Unix. El socket está orientado a datagramas, lo que significa que el protocolo es similar a udp.

Su daemon de registro debe abrir el socket, configurar el socket en el modo de servidor, abrir un archivo de registro en modo de escritura, solicitar que se le notifiquen los paquetes, analizar los mensajes de forma segura y escribirlos en el archivo. Las llamadas importantes del sistema para hacer socket io se describen en man 7 socket. Para recibir notificaciones de los datos entrantes en el socket, puede usar epoll o seleccionar.

+0

Muchas gracias. Ahora tengo mi fin de semana configurado para hacer esto. Gracias de nuevo por su explicación clara, relevante y consisa. – Andrew

+0

syslogd también puede escuchar en el puerto 514 TCP o UDP (tradicionalmente UDP, algunos daemons syslog más nuevos también admiten TCP), para el registro remoto. – ninjalj

1

syslog comúnmente usa un socket PF_LOCAL en/dev/log.

Cuestiones relacionadas