
我正在嘗試將 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