Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

closelog, openlog, setlogmask, syslog - Systemprotokoll steuern

&pagelevel(4)&pagelevel

Definition

#include <syslog.h>

void closelog(void)

void openlog(const char *ident, int logopt, int facility);

int setlogmask(int maskpri);

void syslog(int priority, const char *message, ... /* Argumente */);

Beschreibung

syslog() schreibt eine Meldung message standardmäßig in die Datei /var/adm/syslog. Optional kann der Systemverwalter für den syslog-Dämon auch andere Protokolldateien festlegen. Einzelheiten zur Funktionsweise und zur Steuerung des syslog-Dämonen finden Sie im Handbuch „POSIX Grundlagen“ [1].

Die Meldung besteht aus einem Meldungskopf und dem Meldungstext. Der Meldungskopf enthält die Angabe des Meldungsgewichts, die Zeitangabe, das Kennzeichen syslog und optional die Prozess-Id.

Der Meldungstext wird aus dem Argument message und den darauf folgenden Argumenten erzeugt, als ob diese Argumente an printf() übergeben worden seien, außer dass %m im Formatstring, auf den message zeigt, auch in CRTE-Versionen < V21.0A42 durch die Fehlermeldung ersetzt wird, die dem aktuellen Wert von errno entspricht. Ein nachgestelltes NEWLINE wird ggf. hinzugefügt.

Werte für priority werden durch inklusives ODER aus Meldungsgewicht und ggfs. Funktionswert gebildet. Wenn für facility keine Funktion angegeben wurde, wird die vordefinierte Standardfunktion verwendet.

Mögliche Werte für das Meldungsgewicht sind:

LOG_EMERG

Eine „panic“-Bedingung. Diese Bedingung wird normalerweise an alle Benutzer übertragen.

LOG_ALERT

Eine Bedingung, die sofort korrigiert werden sollte, beispielsweise eine beschädigte Systemdatenbank.

LOG_CRIT

Schwerwiegende Bedingung, beispielsweise Festplattenfehler.

LOG_ERR

Fehler.

LOG_WARNING

Warnmeldungen.

LOG_NOTICE

Bedingungen, bei denen es sich nicht um Fehlerbedingungen handelt, die jedoch spezielle Schritte erfordern.

LOG_INFO

Informationsmeldungen.

LOG_DEBUG

Meldungen mit Informationen, die normalerweise nur beim Testen eines Programms verwendet werden.

facility gibt an, welche Anwendung oder welche Systemkomponente die Meldung erzeugt hat. Mögliche Werte sind:

LOG_USER

Von wahlfreien Benutzerprozessen erstellte Meldungen. Dies ist die standardmäßige Funktions-ID, wenn keine andere angegeben ist.

LOG_LOCAL0

Reserviert für lokale Verwendung.

LOG_LOCAL1

Reserviert für lokale Verwendung.

LOG_LOCAL2

Reserviert für lokale Verwendung.

LOG_LOCAL3

Reserviert für lokale Verwendung.

LOG_LOCAL4

Reserviert für lokale Verwendung.

LOG_LOCAL5

Reserviert für lokale Verwendung.

LOG_LOCAL6

Reserviert für lokale Verwendung.

LOG_LOCAL7

Reserviert für lokale Verwendung.

openlog() setzt Prozessattribute, die nachfolgende Aufrufe von syslog() steuern. Das Argument ident ist eine Zeichenkette, die jeder Meldung vorangestellt wird. logopt ist ein Bitfeld, in dem Protokolloptionen angezeigt werden. Werte für logopt werden durch bitweises inklusives ODER aus beliebig vielen der folgenden Werte erzeugt. Folgendes sind aktuelle Werte für logopt:

LOG_PID

Protokolliert die Prozess-ID mit jeder Meldung. Dies ist nützlich für die Identifizierung spezieller Prozesse.

LOG_CONS

Gibt Meldungen auf der Systemkonsole aus, wenn sie nicht in die Protokolldatei (standardmäßig /var/adm/syslog) geschrieben werden können. Diese Option kann in Prozessen, die nicht über ein Steuerungsterminal verfügen, sicher verwendet werden, da syslog() vor dem Öffnen der Konsole einen Kindprozess erzeugt.

LOG_NDELAY

Öffnet die Protokolldatei (standardmäßig /var/adm/syslog) bei Ausführung von openlog(). Normalerweise wird das Öffnen verzögert, bis die erste Meldung protokolliert wird. Diese Option ist für Programme nützlich, die bei der Zuordnung von Dateideskriptoren auf die Reihenfolge achten müssen.

LOG_ODELAY

Verzögert das Öffnen, bis syslog() aufgerufen wird.

LOG_NOWAIT

Wartet nicht auf Kindprozesse, die zum Protokollieren von Meldungen auf der Konsole aufgespaltet wurden. Diese Option sollte von Prozessen verwendet werden, die mit Hilfe von SIGCHLD eine Benachrichtigung über das Beenden eines Kindprozesses ausgeben, da syslog() andernfalls möglicherweise durch das Warten auf einen Kindprozess blockiert wird, dessen Endestatus bereits erreicht ist.

Das Argument facility codiert eine Standardfunktion, die allen Meldungen zugeordnet werden soll, die nicht über eine bereits codierte explizite Funktion verfügen. Die Voreinstellung für die Standardfunktion ist LOG_USER.

Die Funktionen openlog() und syslog() können Dateideskriptoren zuordnen. Es ist nicht notwendig, openlog() vor syslog() aufzurufen.

Die Funktion closelog() schließt alle offenen Dateideskriptoren, die durch vorhergehende Aufrufe von openlog() und syslog() zugeordnet wurden.

setlogmask() setzt die Protokollprioritätsmaske für den aktuellen Prozess auf maskpri und gibt die vorherige Maske zurück. Wenn maskpri den Wert 0 hat, wird die aktuelle Protokollprioritätsmaske nicht geändert. Aufrufe von syslog() durch den aktuellen Prozess, deren Priorität nicht in maskpri angegeben ist, werden zurückgewiesen. Die Maske für eine bestimmte Priorität pri wird vom Makro LOG_MASK(pri) berechnet. Die Maske für alle Prioritäten bis zu toppri einschließlich werden im Makro LOG_UPTO(toppri) angegeben. Standardmäßig können alle Prioritäten protokolliert werden.

Symbolische Konstanten, die als Werte für logopt, facility, priority und maskpri verwendet werden können, sind in der Include-Datei syslog.h definiert.

Returnwert

setlogmask():

Vorherige Protokollprioritätsmaske.

Siehe auch

printf(), syslog.h.