7

スクリプトに (つまり、サイレント) オプションを実装しようとし-sています - エラー/情報などを指定すると、syslog に送信されますsyslog。それは私がやっていることです:

echo -e "This Is a Test Message\nWell, not really!!"  2>&1 | logger

echo(画面に印刷されません)にメッセージを送信しますsyslogが、両方を同時に行う方法を理解できませんでした。画面に印刷しているときにログを記録するか、別のファイルsyslogにログを送信することについてのみ話している人がいますが、私が対処しようとしている状況については話していません。どんな助けやポインタも大歓迎です。乾杯!!

4

3 に答える 3

4

メッセージを syslog と stdout (stderr ではない) に送信する場合は、次のようにすることもできます。

echo -e "This Is a Test Message\nWell, not really!!" | tee >(exec logger)

そしてそれを行う効率的な方法(関数を作成している場合):

exec 40> >(exec logger)

function log {
    echo -e "$1"
    echo -e "$1" >&40
}

log "something..."

exec 40>&-  ## optionally close it at the end of the script.

これにより、エコーを行うたびにスクリプトが外部バイナリロガーを呼び出す必要がなくなります。

于 2013-09-02T11:07:41.223 に答える
1

その場合は、同じメッセージを 2 回エコーするだけです。できるよ:

echo -e "This Is a Test Message\nWell, not really!!" | tee /dev/stderr | logger

ただし、実際には、次のようにする方が簡単で効率的です。

error='This Is a Test Message\nWell, not really!!'
echo -e "$error" >&2
echo -e "$error" | logger

>&2 は、出力を stdout ではなく stderr に送信します。

于 2013-09-02T11:06:36.690 に答える
0

できるよ:

echo -e "This Is a Test Message\nWell, not really!!" | logger -s

マニュアルページ (man logger) には次のように記載されています。

-s     Log the message to standard error, as well as the system log.
于 2013-09-02T10:55:34.150 に答える