Scroll to navigation

LOGGER(1) Dienstprogramme für Benutzer LOGGER(1)

BEZEICHNUNG

logger - Meldungen in das Systemprotokoll übertragen

ÜBERSICHT

logger [Optionen] Meldung

BESCHREIBUNG

logger überträgt Einträge in das Systemprotokoll.

Wenn das optionale Argument Meldung angegeben ist, wird diese Meldung in das Systemprotokoll übertragen. Falls weder das Argument noch die Option -f angegeben ist, wird der Inhalt der Standardeingabe protokolliert.

OPTIONEN

-d, --udp

verwendet nur Datagramme (UDP). Standardmäßig wird die Verbindung über den in /etc/services definierten Syslog-Port versucht, oft ist dieser der Port 514.

Siehe auch --server und --socket, um anzugeben, wohin verbunden werden soll.

-e, --skip-empty

ignoriert leere Zeilen beim Verarbeiten von Dateien. Eine leere Zeile wird hierbei als Zeile definiert, die keinerlei Zeichen enthält. Daher wird eine Zeile, die nur Leerraum enthält, NICHT als leere Zeile angesehen. Beachten Sie, dass bei Angabe der Option --prio-prefix die Priorität nicht Teil der Zeile ist. Daher wird in diesem Modus eine Zeile als leer angesehen, die nach dem Prioritäts-Präfix (z.B. <13>) keine Zeichen enthält.

-f, --file Datei

protokolliert den Inhalt der angegebenen Datei. Diese Option kann nicht mit einer Befehlszeilenmeldung kombiniert werden.

-i

protokolliert mit jeder Zeile die Prozesskennung des logger-Prozesses.

--id[=ID]

protokolliert die Prozesskennung des logger-Prozesses mit jeder Zeile. Wenn das optionale Argument Kennung angegeben ist, wird dieses anstelle der Prozesskennung des logger-Befehls verwendet. In Skripten, die mehrere Meldungen senden, wird die Verwendung von --id=$$ (PPID) empfohlen.

Beachten Sie, dass die Infrastruktur der Systemprotokollierung (zum Beispiel systemd beim Warten an /dev/log) den Anmeldedaten lokaler Sockets folgen könnte, um die in der Meldung angegebene Prozesskennung außer Kraft zu setzen. logger(1) ist in der Lage, dessen Socket-Anmeldedaten auf die angegebene Kennung zu setzen, was aber voraussetzt, dass Sie über Root-Rechte verfügen und ein Prozess mit der angegebenen Prozesskennung existiert. Anderenfalls werden die Anmeldedaten des Sockets nicht verändert und das Problem stillschweigend ignoriert.

--journald[=Datei]

schreibt einen systemd-Journaleintrag. Der Eintrag wird aus der angegebenen Datei gelesen, ansonsten aus der Standardeingabe. Jede Zeile muss mit einem Feld beginnen, das von journald akzeptiert wird; siehe systemd.journal-fields(7) für Details. Es ist im Allgemeinen eine gute Idee, ein MESSAGE_ID-Feld zu verwenden, da es das Auffinden von Einträgen erleichtert. Beispiele:

logger --journald <<end
MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309
MESSAGE=The dogs bark, but the caravan goes on.
DOGS=bark
CARAVAN=goes on
end

logger --journald=Eintrag.txt

Beachten Sie, dass --journald Werte anderer Optionen ignoriert, wie beispielsweise die Priorität. Falls die Priorität nötig ist, muss sie innerhalb der Eingabe stehen und das Feld PRIORITY verwenden. Die einfache Ausführung von journalctl(1) wird das MESSAGE-Feld anzeigen. Mit journalctl --output json-pretty werden die übrigen Felder angezeigt.

Um Zeilenumbrüche in MESSAGE zu verwenden, geben Sie MESSAGE mehrfach an. Dies wird als Spezialfall behandelt, andere Felder werden als ein Feld im Journal gespeichert, falls sie mehrfach auftauchen.

--msgid msgid

Setzt das MSGID-Feld gemäß RFC 5424 <https://tools.ietf.org/html/rfc5424>. Beachten Sie, dass innerhalb von MSGID kein Leerzeichen zulässig ist. Diese Option wird nur verwendet, wenn zugleich --rfc5424 angegeben ist, anderenfalls wird sie stillschweigend ignoriert.

-n, --server Server

schreibt auf den angegebenen fernen Systemprotokoll-Server statt in den Systemprotokoll-Socket. Außer wenn --udp oder --tcp angegeben ist, versucht logger zuerst, UDP zu verwenden; wenn dies fehlschlägt, wird eine TCP-Verbindung versucht.

--no-act

führt alles aus, außer dem Schreiben der Meldung in das Systemprotokoll und Entfernen der Verbindung zum Journal. Diese Option kann zusammen mit --stderr für Testzwecke verwendet werden.

--octet-count

verwendet die Octet-Counting-Framing-Methode gemäß RFC 6587 <https://tools.ietf.org/html/rfc6587> zum Senden von Meldungen. Wenn diese Option nicht verwendet wird, wird kein Framing mit UDP verwendet und nicht-transparentes Framing (auch als »Octet Stuffing« bekannt) mit TCP.

-P, --port Port

verwendet den angegebenen Port. Wenn diese Option nicht angegeben ist, wird standardmäßig syslog für UDP- und syslog-conn für TCP-Verbindungen verwendet.

-p, --priority Priorität

überträgt die Meldung mit der angegebenen Priorität in das Protokoll. Die Priorität kann numerisch oder als Einrichtung.Stufe-Paar angegeben werden. Zum Beispiel protokolliert -p local3.info die Meldung als informativ in der Einrichtung local3. Die Voreinstellung ist user.notice.

--prio-prefix

schaut in jeder aus der Standardeingabe gelesenen Zeile nach einem Systemprotokoll-Präfix. Dieses Präfix ist eine Dezimalzahl in spitzen Klammern, die sowohl Einrichtung als auch Stufe enthält. Für die Ermittlung der Zahl wird die Einrichtung mit 8 multipliziert und dann die Stufe addiert. Zum Beispiel wird local0.info (was Einrichtung=16 und Stufe=6 bedeutet) zu <134>.

Falls das Präfix keine Einrichtung enthält,wird standardmäßig die durch die Option -p angegebene verwendet. Wenn kein Präfix angegeben ist, wird die Zeile mit der durch -p angegebenen Priorität protokolliert.

Diese Option wirkt sich nicht auf eine Befehlszeilenmeldung aus.

--rfc3164

verwendet das BSD-Syslog-Protokoll gemäß RFC 3164 <https://tools.ietf.org/html/rfc3164> zur Übermitteln von Meldungen an einen fernen Server.

--rfc5424[=ohne]

verwendet das Syslog-Protokoll gemäß RFC 5424 <https://tools.ietf.org/html/rfc5424> zur Übermitteln von Meldungen an einen fernen Server. Das optionale Argument ohne kann eine durch Kommata getrennte Liste der folgenden Werte sein: notq, notime, nohost.

Der Wert notq unterdrückt die Zeit-Qualitäts-strukturierten Daten in der übermittelten Meldung. Die Zeitqualitätsinformationen zeigen an, ob die lokale Uhr synchronisiert war, sowie die maximale Anzahl an Mikrosekunden, die der Zeitstempel abweichen könnte. Die Zeitqualität wird auch automatisch unterdrückt, wenn --sd-id timeQuality angegeben wird.

Der Wert notime (der notq impliziert) unterdrückt den im ISO-8601-Format vorliegenden vollständigen Absender-Zeitstempel, einschließlich Mikrosekunden und Zeitzone.

Der Wert nohost unterdrückt die gethostname(2)-Information aus dem Meldungs-Header.

Das RFC-5424-Protokoll ist für logger seit Version 2.26 die Vorgabe.

-s, --stderr

schreibt die Meldung in die Standardfehlerausgabe und überträgt sie auch in das Systemprotokoll.

--sd-id Name[@Stellen]

gibt eine strukturierte Datenelement-Kennung für einen Meldungs-Header gemäß RFC 5424 an. Die Option muss vor --sd-param angegeben werden, um ein neues Element einzuleiten. Die Anzahl der strukturierten Datenelemente ist unbegrenzt. Für die Kennung (Name plus mögliche @Ziffern) wird die Groß-/Kleinschreibung nicht berücksichtigt. Sie identifiziert eindeutig den Typ und Zweck des Elements. Eine Kennung darf nicht mehrmals in einer Meldung vorhanden sein. Der @Ziffern-Teil ist für benutzerdefinierte, nicht standardisierte Kennungen erforderlich.

logger erzeugt derzeit nur das standardisierte timeQuality-Element. RFC 5424 beschreibt auch die Elemente origin (mit den Parametern ip, enterpriseId, software und swVersion) und meta (mit den Parametern sequenceId, sysUpTime und language). Diese Elementkennungen können ohne das Suffix @Ziffern angegeben werden.

--sd-param Name=Wert

gibt einen strukturierten Datenelement-Parameter an, ein Name-Wert-Paar. Die Option muss nach --sd-id angegeben werden. Sie darf für das gleiche Element mehrmals angegeben werden. Beachten Sie, dass die Anführungszeichen um den Wert erforderlich sind und in der Befehlszeile maskiert werden müssen.


logger --rfc5424 --sd-id zoo@123 \
--sd-param tiger="hungry" \
--sd-param zebra="running" \
--sd-id manager@123 \
--sd-param onMeeting="yes" \
"this is message"

erzeugt:

<13>1 2015-10-01T14:07:59.168662+02:00 ws kzak - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="218616"][zoo@123 tiger="hungry" zebra="running"][manager@123 onMeeting="yes"] this is message

-S, --size Größe

legt die maximal erlaubte Größe der Meldung fest. Die Vorgabe ist 1KiB an Zeichen, welches die in RFC 3164 beschriebene traditionell verwendete Grenze ist. Mit RFC 5424 wurde diese Grenze flexibler. Eine gute Annahme ist, dass RFC-5424-Empfänger mindestens eine 4KiB große Meldung verarbeiten können.

Die meisten Empfänger akzeptieren Meldungen, die größer als 1KiB sind, über jedes Syslog-Übertragungsprotokoll. Daher wird logger in jedem Fall durch die Option --size beeinflusst (nicht nur, wenn --rfc5424 angegeben wurde).

Beachten Sie: Die Begrenzung der Meldungsgröße gilt für die gesamte Meldung einschließlich des Systemprotokoll-Headers. Die Größe dieses Headers hängt von den gewählten Optionen und der Länge des Hostnamens ab. Als Faustregel gilt, dass Header üblicherweise nicht länger als 50 bis 80 Zeichen sind. Wenn Sie die maximale Meldungsgröße wählen, müssen Sie sicherstellen, dass der Empfänger diese maximale Größe ebenfalls unterstützt, ansonsten könnten Meldungen gekürzt werden. Als Faustregel gilt wiederum, dass eine Meldungsgröße von 4 KiB generell funktionieren sollte, aber bei größeren Meldungen sollte zuvor geprüft werden, ob es funktioniert.

--socket-errors[=Modus]

gibt Fehler zu Unix-Socket-Verbindungen aus. Der Modus kann einer der Werte off, on oder auto sein. Im Modus auto erkennt logger, ob systemd der Init-Prozess ist und sorgt dafür, dass /dev/log in der frühen Systemstartphase verwendet werden kann. Andere Init-Systeme ohne /dev/log verursachen keine Fehler, was identisch zur Meldungsbehandlung mit dem Systemaufruf openlog(3) ist. Der Befehl logger(1) hat vor Version 2.26 openlog verwendet und war daher nicht in der Lage, an Unix-Sockets gesendete und verloren gegangene Meldungen zu erkennen.

Der Standardmodus ist auto. Wenn Fehler deaktiviert sind, werden verlorene Meldungen nicht übertragen, wodurch der Aufruf von logger(1) einen erfolgreichen Rückgabewert liefert.

-T, --tcp

verwendet nur ein Datenstromprotokoll (TCP). Standardmäßig wird versucht, zum in /etc/services definierten Port syslog-conn zu verbinden, welcher oft 601 ist.

Siehe auch --server und --socket, um anzugeben, wohin verbunden werden soll.

-t, --tag Markierung

versieht jede zu protokollierende Zeile mit der angegebenen Markierung. Die Standardmarkierung ist der Name des im Terminal angemeldeten Benutzers (oder ein auf der effektiven Benutzerkennung basierender Benutzername).

-u, --socket Socket

schreibt auf den angegebenen Socket statt auf den Systemprotokoll-Socket.

--

beendet die Argumentliste und ermöglicht dadurch, dass die Meldung mit einem Bindestrich (-) beginnen kann.

-h, --help

zeigt einen Hilfetext an und beendet das Programm.

-V, --version

zeigt Versionsinformationen an und beendet das Programm.

EXIT-STATUS

Das Dienstprogramm logger gibt 0 bei Erfolg und >0 zurück, wenn ein Fehler aufgetreten ist.

EINRICHTUNGEN UND STUFEN

Zulässige Einrichtungsnamen sind:

auth
authpriv für Sicherheitsinformationen sensitiver Art
cron

daemon
ftp +
kern kann nicht aus dem Prozess auf Anwendungsebene generiert werden, wird automatisch in user umgewandelt

lpr
mail
news
syslog
user
uucp
local0
bis
local7
security veraltetes Synonym für auth

Gültige Stufennamen sind:

emerg
alert
crit
err
warning
notice
info
debug
panic veraltetes Synonym für emerg
error veraltetes Synonym für err
warn veraltetes Synonym für warning

Für die Prioritätsreihenfolge und beabsichtigte Zwecke dieser Einrichtungen und Stufen, siehe syslog(3).

KONFORM ZU

Der Befehl logger sollte zu IEEE Std 1003.2 (»POSIX.2«) kompatibel sein.

BEISPIELE

logger System rebooted

logger -p local0.notice -t HOSTIDM -f /dev/idmc

logger -n loghost.example.com System rebooted

AUTOREN

Der Befehl logger wurde ursprünglich 1983-1993 durch die Universität von Kalifornien geschrieben und später durch Karel Zak <kzak@redhat.com>, Rainer Gerhards <rgerhards@adiscon.com> und Sami Kerola <kerolasa@iki.fi> neu geschrieben.

SIEHE AUCH

journalctl(1), syslog(3), systemd.journal-fields(7)

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf <https://github.com/util-linux/util-linux/issues>.

VERFÜGBARKEIT

Der Befehl logger ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.

2024-10-01 util-linux 2.40.2