ロガーを使用して標準出力とログとして印刷

ロガーを使用して標準出力とログとして印刷

複数の「echo STRING」コマンドを含むbashスクリプトがあります。ロガーを使用してSTRINGを記録したいのですが、まだ標準出力として印刷したいです。echo STRING | logger明らかにそうではありません。

編集:echo STRING | tee >(logger)そうでした。 >(COMMAND)は、プロセス入力を置き換えるプロセス置換です。

答え1

Bashでは、次のことができます。

logger(){
  tee >(command logger)
}

loggerその後、前のようにパイプします。

Stephen Harrisが提案したように、カスタムロギング機能を使用してこれを実装するには、次のようにします。

logger(){
  tee >(command logger)
}

echolog(){
  printf '%s\n' "$@" | logger
}

答え2

私は通常、次のようなロギング関数を書きます。

mylog()
{
  echo "$@"
  echo "$@" | logger
}

mylog "Hello, world!"

記録したいコンテンツに柔軟性を提供し、必要に応じて行の前にタイムスタンプを追加するなどのこともできます。

関連情報