Node.js 发生错误时如何发送电子邮件?

6
假设我的node.js应用正在运行。如果出现错误(我是指所有错误,不仅仅是web错误。只要发生错误,就算),我该如何调用一个函数来向我发送电子邮件?
基本上,在我希望它写入err.out之前,我想要收到一封电子邮件。
我正在使用node.js和express。
编辑:我知道如何发送电子邮件。我想知道的问题是如何拦截错误。你知道当有错误时,它会记录到out.log中吗?嗯,现在,我正在tail -f out.log,监视错误。我不能整天呆在家里做这个。每次在out.log中弹出错误时,我都希望通过电子邮件收到错误信息。
我希望所有的错误都能通过电子邮件发送给我。(不仅仅是Express错误)。如果被记录了下来,我希望那个错误通过电子邮件发送过来。
2个回答

15

您可以用一个实现发送电子邮件的函数替换节点全局的console.error()函数:

console.error = function(msg) {
  // send email
  // ...

  // additionaly log
  process.stderr.write(msg);
};

那么,每个库中对 console.error() 的所有调用都将调用您特定的实现并发送邮件 ;)


1
我应该把这个放在哪里?是在我的 app.js 中吗?(我正在使用 Node.js Express) - TIMEX
其他的东西(如mongoose,redis)也会通过这个吗?(如果我把它放在app.js中?) - TIMEX
2
你可以将其放置在任何位置(但尽早放置最佳),是的,任何库中对console.error()的每个调用都将调用您的特殊console.error()函数。 - Tobias P.
为什么不使用自定义构造函数覆盖 Error 呢? - Raynos
我将你的解决方案添加到我的Node+Express应用程序中。但它并没有执行预期的自定义操作,而是仍在终端记录错误。我按照你的说明进行操作,但仍然无法正常工作。我做错了什么吗? - Kevz

0

由于所有日志条目都存储在有限数量的日志文件中,而不是尝试拦截所有可能的错误事件,为什么不设置文件更改监视器并将新行发送到您的电子邮件?这样,您还可以安排间隔,以便汇总最近一小时/一天/...的日志条目,与打开单独的电子邮件相比,这将更容易查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接