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
|
|