
最近、/usr/bin/logger について知りましたが、非常に優れていると思います。
優先度引数 (-p) (facility.info、facility.alert など) が含まれていることに気付きました。
したがって、stdin のみをログに記録したい場合は、次のようにします。
stuff | logger -p cron.info
stderr のみをログに記録するには、次のようにします。
stuff 2>&1 > /dev/null | logger -p cron.err
stdout と stderr の両方をログに記録するには:
stuff 2> >(logger -p cron.err) | logger -p cron.info
大量のコピー&ペーストを避けるために、これを実行するためのより簡潔な方法があるかどうか疑問に思っています。
代わりにそのようなことを達成する方法はあるでしょうか?
logging -F cron -s info -e err stuff
どうもありがとうございます。
答え1
望ましい構文が
logging cron info err stuff
このような場合は次の関数を使用します。
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
}
ノート:
- 代わりにスタンドアロン スクリプトを構築することもできます。
-F
、を解析すること-s
は-e
可能ですが、上記ほど単純ではありません。キス-yアプローチ。