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