/usr/bin/logger 中的「多路復用」stdout 和 stderr

/usr/bin/logger 中的「多路復用」stdout 和 stderr

我最近發現了 /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 方法。

相關內容