将 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]每行都应该有一个在该行被记录的实际时间的前置时间戳
  • 日志文件应以当天命名(但这不是必需的)

我已经让这些命令与上面的 bash 命令一起使用,除了 stderr...如此接近!有谁知道如何让它发挥作用?

答案1

谢谢钢铁起子对于您上面的评论。这是现在正在运行的 bash 行:

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

相关内容