syslog(3C) syslog(3C)
NAME
syslog, openlog, closelog, setlogmask - Systemprotokoll steuern
SYNTAX
#include <syslog.h>
void syslog(int level, const char *message, ... /* arguments */);
void openlog(const char *ident, int logopt, int facility);
void closelog(void);
int setlogmask(int maskpri);
BESCHREIBUNG
syslog sendet eine Meldung message an den Systemprotokolldämon
syslogd, der sie in einem entsprechenden Systemprotokoll protokol-
liert, auf der Systemkonsole ausgibt, an eine Liste von Benutzern oder
über das Netzwerk an syslogd auf einem anderen Host weiterleitet. Die
Meldung sieht wie eine printf-Zeichenkette aus, außer daß %m durch die
aktuelle Fehlermeldung (aus errno) ersetzt ist. Ein nachgestelltes
Zeilenvorschubzeichen (NEWLINE) wird gegebenenfalls hinzugefügt.
Die Meldung wird mit einer Priorität gekennzeichnet. Prioritäten set-
zen sich aus facility und Ebene level zusammen. Die Funktion
beschreibt den Teil des Systems, der die Meldung generiert. Die Ebene
wird aus einer geordneten Liste ausgewählt:
LOGEMERG Eine "panic"-Bedingung. Diese Bedingung wird normaler-
weise an alle Benutzer übertragen.
LOGALERT Eine Bedingung, die sofort korrigiert werden sollte,
beispielsweise eine beschädigte Systemdatenbank.
LOGCRIT Schwerwiegende Bedingung, beispielsweise ein Festplat-
tenfehler.
LOGERR Fehler.
LOGWARNING Warnmeldungen.
LOGNOTICE Bedingungen, bei denen es sich nicht um Fehlerbedingun-
gen handelt, die jedoch spezielle Schritte erfordern.
LOGINFO Informationsmeldungen.
LOGDEBUG Meldungen mit Informationen, die normalerweise nur beim
Testen eines Programms verwendet werden.
Wenn eine spezielle Verarbeitung erforderlich ist, kann openlog zur
Initialisierung der Protokolldatei aufgerufen werden. Der Parameter
ident ist eine Zeichenkette, die jeder Meldung vorangestellt ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
syslog(3C) syslog(3C)
logopt ist ein Bitfeld, in dem Protokolloptionen angezeigt werden.
Aktuelle Werte für logopt sind:
LOGPID Protokolliert die Prozeß-ID mit jeder Meldung. Dies ist
nützlich für die Identifizierung eines speziellen
Dämonprozesses (für Dämone, die aufgespalten werden
(forked)).
LOGCONS Gibt Meldungen auf der Systemkonsole aus, wenn sie
nicht an syslogd gesendet werden können. Diese Option
kann in Dämonprozessen, die nicht über ein Steuerungs-
terminal verfügen, sicher verwendet werden, da syslog
vor dem Öffnen der Konsole aufgespalten wird.
LOGNDELAY Öffnet die Verbindung zu syslogd sofort. Normalerweise
wird das Öffnen verzögert, bis die erste Meldung proto-
kolliert wird. Dies ist für Programme nützlich, die die
Reihenfolge der Zuordnung von Dateideskriptoren verwal-
ten müssen.
LOGODELAY Verzögert das Öffnen so lange, bis syslog() aufgerufen
wird.
LOGNOWAIT Wartet nicht auf Sohnprozesse, die zum Protokollieren
von Meldungen auf der Konsole aufgespalten (forked)
wurden. Diese Option sollte von Prozessen verwendet
werden, die mit Hilfe von SIGCHLD eine Benachrichtigung
über das Beenden eines Sohnprozesses ausgeben, da
syslog andernfalls möglicherweise durch das Warten auf
einen Sohnprozeß blockiert, dessen Exit-Status bereits
erreicht ist.
Der Parameter facility codiert eine Standardfunktion, die allen Mel-
dungen zugeordnet werden soll, die nicht über eine bereits codierte
explizite Funktion verfügen:
LOGKERN Vom Kern erstellte Meldungen. Diese können nicht von
einem Benutzerprozeß erstellt werden.
LOGUSER Von beliebigen Benutzerprozessen erstellte Meldungen.
Dies ist die standardmäßige Funktions-ID, wenn keine
andere angegeben ist.
LOGMAIL Das Postsystem.
LOGDAEMON Systemdämone, wie beispielsweise ftpd, routed usw.
LOGAUTH Das Berechtigungssystem: login, su, getty usw.
LOGLPR Das Zeilendrucker-Spool-System: lpr, lpc usw.
LOGNEWS Reserviert für das USENET-Netzwerknachrichtensystem.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
syslog(3C) syslog(3C)
LOGUUCP Reserviert für das UUCP-System; syslog wird momentan
nicht verwendet.
LOGCRON Die Funktion cron/at; crontab, at, cron usw.
LOGLOCAL0-7 Reserviert für die lokale Verwendung.
closelog kann zum Schließen der Protokolldatei verwendet werden.
setlogmask setzt die Protokollprioritätsmaske auf maskpri und gibt die
vorherige Maske zurück. Wenn das Argument maskpri 0 ist, wird die
aktuelle Protokollmaske nicht geändert. Aufrufe von syslog, deren
Priorität nicht in maskpri angegeben ist, werden zurückgewiesen. Die
Maske für eine bestimmte Priorität pri wird vom Makro LOGMASK(pri)
berechnet. Die Maske für alle Prioritäten bis zu toppri einschließlich
werden im Makro LOGUPTO(toppri) angegeben. Standardmäßig können alle
Prioritäten protokolliert werden.
openlog muß nicht vor einem Aufruf von setlogmask() aufgerufen werden.
Symbolische Konstanten, die als Werte für die Argumente logopt,
facility, priority und maskpri verwendet werden können, sind in
<syslog.h> definiert.
BEISPIELE
Der folgende Aufruf protokolliert eine Meldung mit der Priorität
LOGALERT:
syslog(LOGALERT, "who: internal error 23");
Der FTP-Dämon, ftpd, würde folgenden Aufruf openlog senden, um anzuge-
ben, daß alle von ihm protokollierten Meldungen über die Identifizie-
rungszeichenkette ftpd verfügen sollen, von syslogd wie andere Meldun-
gen von Systemdämonen behandelt werden sollen und die Prozeß-ID des
Prozesses enthalten sollen, der die Meldung protokolliert:
openlog("ftpd", LOGPID, LOGDAEMON);
Daraufhin würde er den folgenden Aufruf setlogmask senden, um anzuge-
ben, daß Meldungen mit Prioritäten von LOGEMERG bis LOGERR protokol-
liert und Meldungen mit einer anderen Priorität nicht protokolliert
werden sollen:
setlogmask(LOGUPTO(LOGERR));
Zum Protokollieren einer Meldung mit der Priorität LOGINFO würde er
dann den folgenden Aufruf syslog senden:
syslog(LOGINFO, "Connection from host %d", CallingHost);
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
syslog(3C) syslog(3C)
Ein lokal geschriebenes Dienstprogramm könnte den folgenden Aufruf
syslog senden, um eine Meldung mit der Priorität LOGINFO zu protokol-
lieren, die von syslogd wie andere Meldungen für die Funktion
LOGLOCAL2 behandelt werden soll:
syslog(LOGINFO|LOGLOCAL2, "error: %m");
SIEHE AUCH
at(1), crontab(1), logger(1), login(1), lpr(1), su(1), cron(1M),
ftpd(1M), getty(1M), lpc(1M), routed(1M), syslogd(1M), printf(3S),
syslog(5).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98