如何为Node.js中发生的每个错误发送电子邮件?

时间:2011-08-26 12:14:06

标签: javascript debugging node.js error-handling express

假设我的node.js应用正在运行。如果有错误(我的意思是所有错误。不仅仅是网页错误。如果它出错了,它很重要),我该如何调用函数向我发送电子邮件?

基本上,在我想要写入err.out之前,我想要发送一封电子邮件给我。

我正在使用node.js并表达。

编辑:我知道如何发送电子邮件。我想知道的问题是如何拦截错误。 你知道当出现错误时,它会记录到 out.log 吗?那么,现在,我是tail -f out.log,监控错误。我不能整天坐在家里这样做。我想在out.log中弹出任何时候通过电子邮件发送给我的错误。

我希望通过电子邮件将 所有 错误发送给我。 (不只是Express错误)。如果已记录,我希望通过电子邮件发送该错误。

3 个答案:

答案 0 :(得分:11)

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

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

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

然后 每个库中的每个调用 对console.error()都会调用你的特定实现发送邮件;)

答案 1 :(得分:1)

查找nodejs smtp clients/servers

emailjs示例

var email   = require("./path/to/emailjs/email");
var server  = email.server.connect({
    user:       "username", 
    password:"password", 
    host:       "smtp.gmail.com", 
    ssl:        true
});

// send the message and get a callback with an error or details of the message that was sent
server.send({
    text:  "i hope this works", 
    from:  "you <username@gmail.com>", 
    to:    "someone <someone@gmail.com>, another <another@gmail.com>",
    cc:    "else <else@gmail.com>",
    subject: "testing emailjs"
}, function(err, message) { console.log(err || message); });

答案 2 :(得分:0)

由于所有日志条目都存储在有限数量的日志文件中,而不是试图拦截所有可能的错误事件,为什么不设置文件更改监视器并将新行邮寄给您?这样,您还可以使用最后一小时/每天的摘要日志条目来安排时间间隔...与打开单独的邮件相比,这将更容易理解。