
Ich habe vor Kurzem von /usr/bin/logger erfahren und finde es sehr gut.
Mir ist aufgefallen, dass es ein Prioritätsargument (-p) enthält (facility.info, facility.alert usw.).
Wenn ich also nur über die Standardeingabe protokollieren möchte, mache ich das folgendermaßen:
stuff | logger -p cron.info
So protokollieren Sie nur stderr:
stuff 2>&1 > /dev/null | logger -p cron.err
So protokollieren Sie sowohl stdout als auch stderr:
stuff 2> >(logger -p cron.err) | logger -p cron.info
Ich frage mich, ob es eine prägnantere Möglichkeit gibt, dies zu tun, um viel Kopieren und Einfügen zu vermeiden.
Gibt es stattdessen eine Möglichkeit, solche Dinge zu erreichen?
logging -F cron -s info -e err stuff
Vielen Dank
Antwort1
Dies wäre recht einfach, wenn die gewünschte Syntax wäre
logging cron info err stuff
Verwenden Sie in diesem Fall die folgende Funktion:
logging() {
if [ "$#" -lt 4 ]; then
echo "Too few arguments." >&2
return 1
else
local prefix postfix1 postfix2
prefix="$1"
postfix1="$2"
postfix2="$3"
shift 3
"$@" 2> >(logger -p "$prefix.$postfix2") | logger -p "$prefix.$postfix1"
fi
}
Anmerkungen:
- Sie können stattdessen ein eigenständiges Skript erstellen.
- Das Parsen von
-F
,-s
,-e
ist möglich, wenn auch nicht so einfach wie obenKUSS-y-Ansatz.