logger ist ein Kommandozeilen-Tool, das in Linux- und Unix-Betriebssystemen verwendet wird, um Protokolle zur lokalen /var/log/syslog
Datei oder zum entfernten Syslog-Server hinzuzufügen. logger bietet verschiedene Optionen für das Hinzufügen von Protokollen, wie z. B. die Einstellung der Priorität, die Angabe eines entfernten Systems oder die explizite Definition des Syslog-Ports.
Der Befehl logger ist in den meisten Linux-Distributionen standardmäßig installiert. Es ist also nicht nötig, ihn explizit zu installieren. Wir können die Hilfe und die Nutzungsinformationen mit der Option -h
wie unten ausgeben. Die am häufigsten verwendeten Optionen des Logger-Befehls werden mit einer Beschreibung aufgelistet.
$ logger -h
Alternativ können wir für detailliertere Hilfe- und Verwendungsinformationen auch die Manpage des Logger-Befehls wie untenstehend ansehen und verwenden.
$ man logger
Syntax des logger-Befehls
Der logger-Befehl hat eine einfache Syntax, bei der zuerst die Optionen angegeben werden und dann das Protokoll oder die Nachricht, die wir an Syslog senden wollen.
logger OPTIONS LOG
- `OPTIONEN` sind einzelne oder mehrere Optionen, um einige Attribute wie z.B. Remote-Server, Port, Log-Einrichtung usw. zu setzen.
- `LOG` ist die Log-Meldung, die wir hinzufügen oder senden wollen. Das Umgeben mit Anführungszeichen macht es zuverlässiger.
Linux Syslog
Der Syslog-Mechanismus ist ein wichtiger Teil der Linux-Protokollierung. Die meisten Linux-Distributionen wie Ubuntu, Debian, CentOS, Mint, RedHat und Suse speichern die Protokolldateien unter dem Verzeichnis /var/log
. Es gibt verschiedene Arten von Logs unter diesem Verzeichnis wie auth, MySQL, apache, etc. Syslog ist eine allgemeine Protokolldatei und wird verwendet, um Protokolle in Bezug auf das System, die Dienste usw. zu speichern. Die syslog
Datei kann mit dem tail-Befehl wie folgt eingesehen werden.
$ tail /var/log/syslog
Drucken von Syslog-Protokollen
Bevor wir beginnen, ein Protokoll in die Syslog-Datei einzufügen, ist das Drucken der aktuellen Syslog-Datei sehr nützlich. Wir können verschiedene Befehle verwenden, um die Syslog-Datei zu drucken. tail
ist ein Befehl, mit dem wir die letzten 10 Zeilen der angegebenen Datei ausdrucken können. Alternativ können wir die Zeilenzahl, die wir drucken wollen, explizit angeben. Im folgenden Beispiel werden wir 30 Zeilen aus dem /var/log/syslog
drucken. Wir verwenden die Option -n
, um die Zeilenzahl anzugeben.
$ tail -n 30 /var/log/syslog
Protokoll zur Syslog-Datei hinzufügen
Lassen Sie uns mit einem einfachen Beispiel für den Logger-Befehl beginnen. Wir werden nur eine einzelne Zeile in die Syslog-Datei einfügen, ohne dem Logger-Befehl eine Option zu geben. Im folgenden Beispiel fügen wir die Zeile „This is just a simple log line“ zur syslog-Datei hinzu. Dann werden wir sie mit dem tail-Befehl auflisten.
$ logger "This is just a simple log line"
Wir können sehen, dass das Log am Ende der Datei hinzugefügt wird, die unten aufgelistet ist. Es gibt auch einige Informationen über das Protokoll wie unten.
- `Feb 26 01:20:47` ist der Zeitstempel oder die Datumsinformation über das Protokoll, wenn es zur Syslog-Datei hinzugefügt wird.
- `poftut-com` ist der Name des Systems.
- `ismail` ist der Benutzer- oder Loggername.
Protokollpriorität oder Einrichtung festlegen
Generell werden Protokolle nach den protokollierenden Ressourcen priorisiert. Dies wird auch als Facility bezeichnet, die zur Kategorisierung der Logs verwendet wird. Wir können die Priorität oder Einrichtung mit Hilfe der -p
oder --priority
Langform-Option angeben. Wenn wir die Priorität oder Einrichtung nicht angeben, ist die Standardeinstellung user.notice
. Im folgenden Beispiel setzen wir die lof-Priorität auf local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
Spezifizieren Sie die IP-Adresse des entfernten Syslog-Servers
Standardmäßig legt der Logger-Befehl die angegebene Logline in die lokale System-/var/log/syslog
Datei. Dies ist jedoch nicht immer der Fall. In Unternehmensumgebungen sollten die Logs in einem zentralen Log-Server gesammelt und verwaltet werden. Wir können den Logger-Befehl verwenden, um das angegebene Protokoll durch Angabe der IP-Adresse oder des Hostnamens an den Remote-Server zu senden. Wir werden die -n
oder --server
Option verwenden, um den entfernten Log-Server zu senden.
$ logger -n 192.168.1.10 "This is just a simple log line"
TCP als Syslog-Protokoll verwenden
Syslog verwendet standardmäßig das UDP-Protokoll. UDP bietet eine schnellere, ressourcenschonende und einfache Übertragung von Log-Dateien. Aber UDP bietet keine vollständige Zuverlässigkeit, wo TCP ins Spiel kommt. Wir können das Standard-Übertragungsprotokoll UDP in TCP ändern, indem wir die -T
oder --tcp
Option verwenden.
$ logger -n 192.168.1.10 -T "This is just a simple log line"
Portnummer des entfernten Syslog-Servers festlegen
Wenn ein Protokoll vom lokalen zum entfernten System gesendet wird, ist der Standard-Port des Syslogs 514 sowohl für das UDP- als auch das TCP-Protokoll. Wir können die Portnummer explizit ändern, indem wir die Option -P
oder --port
verwenden, indem wir die Portnummer angeben.
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Befehlsausgabe als Log umleiten
Linux bietet eine Menge Tools, die ihre Aktionen genau protokollieren. Wir können den Logger-Befehl verwenden, um diese Befehle als Log auszugeben. e werden einfach die Backticks der Bash-Shell verwenden, um den Befehl zu umgeben. Unten loggen wir den Befehl who
in das Syslog.
$ logger `who`
Die letzte Zeile des Syslogs liefert die Ausgabe des who-Befehls, die Benutzernamen, Konsolennummer und Datum des aktuell angemeldeten Benutzers enthält.
Angegebene Datei protokollieren
Wir können den Inhalt einer Textdatei zeilenweise in die Syslog-Datei eintragen. Wir verwenden die Option -f
und geben die Datei an, die wir protokollieren wollen. In diesem Beispiel werden wir die Datei mit dem Namen hostnames
protokollieren.
$ logger -f hostnames
Protokollgröße einstellen oder begrenzen
Logs werden verwendet, um einfache Informationen zu erstellen. Wenn es also einige Zeilen mit vielen Daten gibt, sollten sie übersetzt werden oder ein Limit gesetzt werden. Wir können ein Limit für die Zeichenanzahl der Log-Zeilen setzen, indem wir die Option --size
und die gewünschte Zeichenanzahl verwenden. Im folgenden Beispiel setzen wir die Anzahl oder das Limit auf 10.
$ logger --size 10 123456789012345678901234567
Leere Zeilen ignorieren
Beim Lesen von Log-Zeilen aus einer Datei können einige leere Zeilen auftreten. Das Protokollieren von leeren oder leeren Zeilen ist nicht effizient, daher können wir die leeren oder leeren Zeilen ignorieren, indem wir die -e
Option wie unten verwenden.
$ logger -e -f hostnames