我正在尝试让 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]
每行都应该有一个在该行被记录的实际时间的前置时间戳- 日志文件应以当天命名(但这不是必需的)
我已经让这些命令与上面的 bash 命令一起使用,除了 stderr...如此接近!有谁知道如何让它发挥作用?
答案1
谢谢钢铁起子对于您上面的评论。这是现在正在运行的 bash 行:
node index.js 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' >> $(date --utc +\%Y-\%m-\%d).log