table of contents
- buster 2.12-1
- buster-backports 4.2.0-1~bpo10+2
- testing 4.9.1-7
- unstable 4.9.1-7
SYSLOG(3) | Linux-Programmierhandbuch | SYSLOG(3) |
BEZEICHNUNG¶
closelog, openlog, syslog, vsyslog - verschickt Nachrichten an die SystemprotokollierungÜBERSICHT¶
#include <syslog.h>void openlog(const char *ident, int
option, int facility);
void syslog(int priority, const char *format,
…);
void closelog(void);
void vsyslog(int priority, const char *format, va_list ap);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
vsyslog(): Seit Glibc 2.19: _DEFAULT_SOURCE Glibc 2.19 und älter: _BSD_SOURCE
BESCHREIBUNG¶
openlog()¶
openlog() öffnet für ein Programm eine Verbindung zum Syslog-Daemon.Die Zeichenkette ident wird jeder Nachricht vorangestellt und wird üblicherweise auf den Programmnamen gesetzt. Falls ident gleich NULL ist, wird der Programmname benutzt. (POSIX.1-2008 enthält keine Spezifikation für den Fall, dass ident gleich NULL ist)
Der option-Parameter definiert Schalter, welche die Ausführung von Openlog und darauffolgende Aufrufe von syslog() steuern. Der facility-Parameter definiert einen Standardwert, welcher benutzt wird, falls in darauffolgenden syslog()-Aufrufen nichts spezifiziert wurde. Die Werte, die für option und facility angegeben werden dürfen, werden weiter unten beschrieben.
Die Benutzung von openlog() ist optional; gegebenenfalls wird die Routine automatisch von syslog() aufgerufen, wenn es nötig ist, dann wird ident auf NULL gesetzt.
syslog() und vsyslog()¶
syslog() erzeugt eine Protokoll-Nachricht, die vom syslogd(8) verteilt wird.Der Parameter priority ist das Ergebnis einer ODER-Verknüpfung eines Werts facility und eines Werts level (weiter unten beschrieben). Falls kein Wert facility mit priority ODER-verknüpft wird, dann wird der durch openlog() gesetzte Vorgabewert verwandt, oder, falls es keinen vorhergehenden Aufruf openlog() gab, die Vorgabe LOG_USER verwandt.
Die verbleibenden Parameter sind format, wie bei printf(3) und weitere Parameter, die von format benötigt werden. Allerdings wird die Zwei-Zeichen-Folge %m durch die Fehlermeldung strerror(errno) ersetzt werden. Die Formatzeichenkette muss kein abschließendes Zeilenumbruchzeichen enthalten.
Die Funktion vsyslog() führt die gleiche Aufgabe aus wie syslog(), mit dem Unterschied, dass sie eine Liste an Parametern erhält, die mit Makros aus der stdarg(3)-Variablenliste abgefragt werden.
closelog()¶
closelog() schließt den Dateideskriptor, der zum Schreiben der Protokoll-Nachrichten benutzt wurde. Die Benutzung von closelog() ist optional.Werte für option¶
Der Parameter option von openlog() ist eine Bitmaske, die durch ODER-Verknüpfung beliebiger der folgenden Werte erstellt wird:- LOG_CONS
- schreibt direkt auf die Systemkonsole, falls ein Fehler beim Schreiben an die Systemprotokollierung auftritt.
- LOG_NDELAY
- öffnet die Verbindung sofort (normalerweise wird die Verbindung geöffnet, wenn die erste Nachricht protokolliert wird). Dies kann zum Beispiel nützlich sein, falls durch ein nachfolgendes chroot(2) die intern von der Protokollierungseinrichtung verwandten Pfadnamen unerreichbar werden würden.
- LOG_NOWAIT
- wartet nicht auf Kindprozesse, welche eventuell beim Protokollieren der Nachricht erzeugt wurden. (Die GNU-C-Bibliothek erzeugt keine Kindprozesse, insofern hat diese Option keine Auswirkung unter Linux.)
- LOG_ODELAY
- das Gegenteil von LOG_NDELAY; das Öffnen der Verbindung wird bis zum Aufruf von syslog() verzögert. (Das ist das Standardverhalten und muss nicht angegeben werden.)
- LOG_PERROR
- (nicht in POSIX.1-2001 oder POSIX.1-2008) die Nachricht auch nach stderr protokollieren.
- LOG_PID
- füge die PID des Aufrufenden in jede Nachricht ein.
Werte für facility¶
Der Parameter facility wird benutzt, um anzugeben, welcher Programmtyp die Nachricht protokolliert. Dadurch kann mit der Konfigurationsdatei syslog.conf erreicht werden, dass Nachrichten von unterschiedlichen Einrichtungen auch unterschiedlich behandelt werden.- LOG_AUTH
- Sicherheits-/Autorisations-Nachrichten
- LOG_AUTHPRIV
- Sicherheits-/Autorisations-Nachrichten (privat)
- LOG_CRON
- Uhr-Daemon (cron und at)
- LOG_DAEMON
- System-Daemonen ohne spezielle Einrichtungswerte
- LOG_FTP
- FTP-Daemon
- LOG_KERN
- Kernel-Nachrichten (diese können nicht von Benutzerprozessen erzeugt werden)
- LOG_LOCAL0 bis LOG_LOCAL7
- reserviert für den lokalen Gebrauch
- LOG_LPR
- Zeilendrucker-Untersystem
- LOG_MAIL
- Mail-Subsystem
- LOG_NEWS
- Usenet Nachrichten-Untersystem
- LOG_SYSLOG
- Nachrichten, die intern vom syslogd(8) erzeugt wurden
- LOG_USER (Standardwert)
- generische Nachrichten auf Anwenderebene
- LOG_UUCP
- UUCP-Subsystem
Werte für level¶
Dieser Parameter gibt die Dringlichkeitsstufe der Nachricht an. Die Stufen sind in absteigender Wichtigkeit:- LOG_EMERG
- Das System ist unbrauchbar.
- LOG_ALERT
- Es muss sofort gehandelt werden.
- LOG_CRIT
- kritische Bedingungen
- LOG_ERR
- Fehlerbedingungen
- LOG_WARNING
- Warnungsbedingungen
- LOG_NOTICE
- normale, aber bedeutende Bedingung
- LOG_INFO
- Information
- LOG_DEBUG
- Debuginformation
Die Funktion setlogmask(3) kann dazu benutzt werden, um das Protokollieren auf bestimmte Level einzuschränken.
ATTRIBUTE¶
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.Schnittstelle | Attribut | Wert |
openlog(), closelog() | Multithread-Fähigkeit | MT-Safe |
syslog(), vsyslog() | Multithread-Fähigkeit | MT-Safe env locale |
KONFORM ZU¶
Die Funktionen openlog(), closelog() und syslog() (aber nicht vsyslog()) sind in SUSv2, POSIX.1-2001, and POSIX.1-2008 spezifiert.POSIX.1-2001 spezifiert nur die Werte LOG_USER und LOG_LOCAL* für facility. Auf den meisten UNIX Systemen gibt es jedoch auch die anderen facility-Optionen mit der Ausnahme von LOG_AUTHPRIV und LOG_FTP.
Der Wert LOG_PERROR für den Parameter option ist in POSIX.1-2001 oder POSIX.1-2008 nicht spezifiert, aber auf den meisten UNIX-Versionen verfügbar.
ANMERKUNGEN¶
Das Argument ident im Aufruf von openlog() wird wahrscheinlich unverändert gespeichert. Falls sich demnach die Zeichenkette, auf die sich ident bezieht, ändert, kann syslog() die geänderte Zeichenkette voranstellen. Falls die Zeichenkette nicht mehr gefunden werden kann, ergibt dies ein undefiniertes Ergebnis. Die portabelste Lösung ist die Verwendung einer konstanten Zeichenkette.Übergeben Sie niemals eine Zeichenkette, die Daten von Benutzeriengaben enthält, als Format, sondern benutzen Sie das Folgende:
syslog(priority, "%s", string);
SIEHE AUCH¶
journalctl(1), logger(1), setlogmask(3), syslog.conf(5), syslogd(8)KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 5.04 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Gerd Koenig <koenig.bodensee@googlemail.com> erstellt.Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.
15. September 2017 | Linux |