Fehlerbehandlung mit syslog

Willemers Informatik-Ecke

Fehlerprotokoll ohne großen Aufwand

Unter UNIX gibt es den syslog-Dämon, der Fehlermeldungen des Systems zentral entgegen nimmt und der weitgehend konfigurierbar ist. Als Programmierer ist man herzlich eingeladen, sich an dieser Art der Fehlermeldung zu beteiligen. Das Fehlersystem hat eine relativ simple Schnittstelle und ermöglicht Fehlerprotokolle nach Schwere zu klassifizieren. Neben der Arbeitserleichterung, nicht selbst ein Protokoll programmieren zu müssen, hat es den Vorteil, dass die Protokolle dort erscheinen, wo sie auch gefunden werden. Dazu kommt, dass man sich nicht um die Beseitigung seiner Dateileichen kümmern muss. Schließlich ist es von ungeheurem Vorteil, wenn man die Debugstufe des Programmes im laufenden Betrieb herauf- und herabsetzen kann.

#include <syslog.h>

openlog("MeinProgramm", 0, 0);
...
syslog(LOG_INFO | LOG_LOCAL2, 
       "Fehler Nr %d: %s", FehlerNr, Message);
...
closelog();

openlog() meldet den Programmnamen an, damit er in den Protokollen angezeigt wird. syslog() setzt die eigentliche Meldung ab. Der Aufruf entspricht dem des printf. Er wird lediglich eine Priorität-Konstante vorangestellt. Hier die Tabelle der Prioritäten:

Konstante Bedeutung
LOG_EMERG Notfall: System ist nicht mehr lauffähig.
LOG_ALERT Alarm: Eingreifen ist erforderlich
LOG_CRIT Kritisch: Meist Hardware-Probleme
LOG_ERR Fehlersituation
LOG_WARNING Warnung: Es kann aber weitergehen
LOG_NOTICE Eine wichtige Information
LOG_INFO Informationen
LOG_DEBUG Debug-Informationen zur Verfolgung des Prozessablaufes

Geodert wird dieser Wert mit der Facility. Damit wird die Quelle des Fehlers beschrieben. Typische Werte sind:

syslog() syslog.conf Verursacher
LOG_AUTH auth Authorisierung
LOG_AUTHPRIV auth-priv Authorisierung
LOG_CRON cron Meldungen von cron und at
LOG_DAEMON daemon System-Daemonen
LOG_KERN kern Kernel
LOG_LOCAL0 bis LOG_LOCAL7 local0 bis local7 für eigene Verwendung
LOG_LPR lpr Druck Subsystem
LOG_CRIT meist Hardware-Probleme
LOG_MAIL mail
LOG_NEWS news
LOG_SYSLOG syslog Nachrichten von syslog selbst
LOG_USER user User-Level Nachrichten
LOG_UUCP uucp vom uucp

In der /etc/syslog.conf kann festgelegt werden, welche Meldungen in welcher Datei vom syslog-Dämon protokolliert werden soll.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru
Verlagsrechte bei galileo computing


Homepage (C) Copyright 2002 Arnold Willemer