O
syslogd, escrito inicialmente por
Eric Allman para *UNIX de kernel com poucos Kbytes, trabalhava com poucas mensagens de log. Os *UNIX modernos com kernels que podem variar de 400K a 16MB (
Linux) passaram a produzir uma quantidade muito grande de logs, sem contar os programas (ssh, Postfix, SGBDS, etc), que produzem ainda mais log. Então o daemon do syslog foi divido em dois:
- syslogd - Linux system logging utilities;
- klogd - Kernel Log Daemon.
klogd
O klogd é o daemon responsável para por capturar as mensagens de lançadas pelo
kernel.
O klogd guarda suas mensagens em dois locais, no /proc ou usando a "sys_syslog interface". O klogd escolhe qual dos dois vai usar da seguinte maneira: verifica se o /proc está montado, se estiver, utilizará o
/proc/kmsg para gravar as mensagens de log, caso contrário utilizará o "system call interface" para mandar as mensagens de erro.
Uma vez que a mensagem é enviada para o syslogd, o klog pode priorizar as mensagens enviadas pelo kernel.
As mensagens enviadas pelo kernel tem a seguinte sintaxe:
<[0-7]> mensagem do kernel
Os valores <[0-7]> são definidos no kernel.h.
O klogd também envia as mensagens para o console toda a mensagem com valor menor que 7. Já as mensagens com valor 7 são tratadas como mensagem de debug.
O problema é que a configuração padrão gera mensagens em demasia na saída de tela, então normalmente se utiliza o klog da seguinte maneira:
# klogd -c 0
O comando acima mostra na tela apenas os logs de PANIC.
Kernel Address Resolution: Uma vez que o kernel detecta um erro interno, uma trigger é disparada mostrando todo o conteúdo que estava no processador no momento do erro. O klogd fornece essa facilidade de especificar que função foi chamada e quais variáveis estavam envolvidas no erro.
syslogd
Captura tanto as mensagens do kernel quanto as mensagens do sistema.
O syslogd dá suporte para logs remotos, por exemplo, você pode fazer todas as máquinas mandarem um log para uma máquina específica que analisa os logs de todas as máquinas de uma empresa.