SelfLinux Systemverwaltung Syslog Abschnitt 5 | SelfLinux-0.13.0

| Syslog | Autor Formatierung GFDL

#### 5 Meldungen selbst erzeugen

Es gibt mehrere Fälle, in denen man selbst Meldungen erzeugen möchte. Denkbar sind beispielsweise Cron-Jobs, die neben dem Verschicken der EMail mit den Script-Ausgaben kurze Erfolgs- oder Mißerfolgsmeldung über Syslog schreiben sollen. Eine weitere Anwendung sind automatisch ausgeführte Scripte, beispielsweise /etc/ppp/ip-up oder rc-Scripte.

Es gibt ein kleines, einfaches Werkzeug, mit dem man Syslog-Meldungen erzeugen kann. Es heißt logger. Diesem Werkzeug kann man über Optionen sagen, wie eine Meldung zu loggen ist. Hier kann man beispielsweise Priority und Facility angeben.

Die wichtigsten Optionen sind:

Option | Beschreibung
--- | ---
-i | Prozeß-ID mit in die Nachricht schreiben
-p <Fac.>.<Pri.> | Angegenene Priorität und Facility verwenden. Mögliche Werte sind die gleichen wie die in /etc/syslog.conf verwendbaren, siehe Abschnitt "Quellen von Meldungen" und "Priorität von Meldungen". Wird diese Option nicht angegeben, wird user.notice verwendet.
-t <Tag> | Angegebenes "Tag" verwenden. Meist wird hier der Name des Scriptes verwendet.

Es gibt zwei Arten, logger aufzurufen. Einmal kann man die Meldungen mit in die Kommandozeile schreiben, direkt hinter die Optionen. Mindestens wenn die Meldung Minuszeichen (-) enthalten könnte, sollte man sie mit -- abtrennen, um zu vermeiden, dass Meldungsteile als Optionen mißinterpretiert werden. Ein Beispiel:

user@linux ~$ logger -i -t MeinProgramm -- Ich bin eine Meldung.

Dies erzeugt dann folgenden Logdatei-Eintrag:

user@linux ~$ logger -i -t MeinProgramm -- Ich bin eine Meldung. Apr 13 13:02:04 atlas MeinProgramm[6178]: Ich bin eine Meldung.

Die zweite Art des Aufrufes unterscheidet sich in der Art, wie die Meldung übergeben wird. Wird nämlich keine auf der Kommandozeile angeben, liest logger die Standard-Eingabe. Damit kann man also schreiben:

user@linux ~$ echo "Ich bin eine Meldung." | logger -i -t MeinProgramm

was zum gleichen Ergebnis führt. logger geht auch mit mehreren Eingabezeilen korrekt um (jede Zeile wird eine Meldung). In Scripten kann man deshalb beispielsweise komfortabel schreiben:

Beispielscript

    LOGGER="/usr/bin/logger -t `basename $0`[$$]"

    {
      test -e /etc/irgenteinedatei || echo "Error, Datei nicht gefunden!";
      date;
      echo "eine andere Fehlermeldung";
    } | $LOGGER

Dies erzeugt auf elegante Art und Weise folgende Einträge:

/var/log/messages

    Apr 13 13:20:45 atlas script.sh[6338]: Error, Datei nicht gefunden!
    Apr 13 13:20:45 atlas script.sh[6338]: Sat Apr 13 13:20:45 MEST 2002
    Apr 13 13:20:45 atlas script.sh[6338]: eine andere Fehlermeldung