將 Cron Stderr 和 Stdout 重新導向到帶有時間戳記的日誌文件

將 Cron Stderr 和 Stdout 重新導向到帶有時間戳記的日誌文件

我正在嘗試將 stdout 和 stderr 放入我的 cron 進程的日誌檔案中。目前,stdout 可以按預期實現,但 stderr 則不能。我的時間戳造成了這個問題。如果我刪除管道ts部分,stdout 和 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 被記錄在命令列上,而不是將其放入我需要的日期日誌檔案中。我需要它來:

  • 附加到日誌文件,而不是覆蓋
  • 附加 async-ly,這樣我就可以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

相關內容