Der Syslog-Daemon ist ein an der Universität von Berkeley entwickeltes Systemwerkzeug, welches den Anwendungs- und Systemprogrammen eine standardisierte
Schnittstelle (API) bietet, um Nachrichten, Warnungen und Fehler zu protokollieren. Der Syslog-Daemon ist
heute fester Bestandteil von allen BSD und System V Unix-Varianten. Der Vorteil für den
Programmierer liegt darin, daß er sich nicht selbst um das Handling von Logdateien und um die Auswahl und
Menge von Lognachrichten kümmern muß. Er schickt einfach alle Nachrichten an den Syslog-Daemon, wo die
weitere Verarbeitung erfolgt.
Der Vorteil
für den Anwender liegt darin, daß er nicht für jedes Programm das Logging einzeln konfigurieren muß.
Stattdessen legt er einmal alle Einstellungen zentral in einer Konfigurationsdatei fest. Die Einstellungen
gelten sodann für alle Programme, die sich des Syslog API bedienen.
Jede Nachricht, die ein Programm an den Syslog Daemon sendet, wird dabei über die zwei Parameter
Facility und Severity eindeutig klassifiziert.
Der Parameter Facility spezifiziert dabei, was für eine Art Programm die Nachricht sendet. Dies erlaubt
es, Lognachrichten von verschiedenen Klassen von Programmen, unterschiedlich zu behandeln. Die folgenden
Facilities werden dabei in /usr/include/syslog.h
zur Verfügung gestellt.
Der Parameter Severity gibt den Informationsgehalt einer Nachricht bzw. die Schwere eines aufgetretenen Fehlers an. Die folgenden Severities stehen dabei (in absteigender Wichtigkeit) zur Verfügung:
Wenn ein Programm nun Nachrichten über den Syslog Daemon protokollieren möchte, so benutzt es die
Funktionen openlog()
, syslog()
und closelog()
der C Runtime Library. Auch diese
Funktionen werden über /usr/include/syslog.h
eingeschlossen. Der Daemon nimmt
die Nachrichten des Programms entgegen und schreibt sie in die entsprechenden Log Dateien.
Um festzulegen, welche Meldungen in welche Logdatei geschrieben werden, konfiguriert der Anwender den
Syslog Daemon über die Datei /etc/syslog.conf
. Diese Konfigurationsdatei setzt sich aus Paaren von
Regeln und Zielen zusammen. Das Regelfeld selektiert dabei die Nachrichten, das Zielfeld gibt an, in welche
Datei die Nachrichten geschrieben werden sollen. Ein typischer Aufbau könnte z.B. so aussehen:
kern.crit /dev/console mail.*;mail.!=info /var/adm/mail mail,news.=info /var/adm/infoDie erste Pattern erkennt alle Nachrichten der Facility Kernel mit der Priorität Critical und höher und schreibt diese auf die Bildschirmkonsole.