
我最近發現了 /usr/bin/logger,我發現它非常好。
我注意到它包含一個優先參數 (-p)(facility.info、facility.alert 等)。
因此,如果我只想記錄標準輸入,我會這樣做:
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 方法。