Cron StderrとStdoutをタイムスタンプログファイルにリダイレクトする

Cron StderrとStdoutをタイムスタンプログファイルにリダイレクトする

cronプロセスのログファイルに追加するためにstdoutとstderrを取得しようとしています。現在、stdoutは期待どおりに機能しますが、stderrは機能しません。私のタイムスタンプが問題の原因です。パイプ部分を削除すると、tsstdoutとstderrの両方がログファイルに書き込まれますが、その行に必要な正しいタイムスタンプはありません。

強打命令:

node index.js | ts '[%Y-%m-%d %H:%M:%S]' >> $(date --utc +\%Y-\%m-\%d).log 2>&1

ノードJSスクリプト:

console.log('log');
console.error('error');

私のログファイルはどのように見えますか?

[2020-04-15 16:26:10] log

私のログファイルを次のように作成したいと思います。 (タイムスタンプは、各行が記録された正確な時間を反映する必要があります。)

[2020-04-15 16:26:10] log
[2020-04-15 16:26:11] error

現在、stderrは必要な日付ログファイルに保存するのではなく、コマンドラインに書き込まれます。私はそれのために必要です:

  • 上書きする代わりにログファイルに追加
  • tail -fスクリプトの実行中にリアルタイムのロギングを表示できるように、非同期で接続します。
  • [%Y-%m-%d %H:%M:%S]各行には、行が記録された実際の時刻のタイムスタンプを前に追加する必要があります。
  • ログファイルの名前は現在の日付に従って指定する必要があります(必須ではありません)。

stderrを除いて、上記のbashコマンドで動作するコマンドがあります...近すぎます!誰もが動作する方法を知っていますか?

ベストアンサー1

ありがとうスチールドライバー上記のご意見に関して。現在実行中のbash行は次のとおりです。

node index.js 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' >> $(date --utc +\%Y-\%m-\%d).log

おすすめ記事