Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为Node.js中发生的每个错误发送电子邮件?_Javascript_Debugging_Node.js_Error Handling_Express - Fatal编程技术网

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

Javascript 如何为Node.js中发生的每个错误发送电子邮件?,javascript,debugging,node.js,error-handling,express,Javascript,Debugging,Node.js,Error Handling,Express,假设我的node.js应用程序正在运行。如果有错误(我指的是所有错误,而不仅仅是网络错误。如果出现错误,它就算数),我如何调用函数向我发送电子邮件 基本上,在我想把它写到err.out之前,我想先发一封电子邮件给我 我正在使用node.js和express 编辑:我知道如何发送电子邮件。我想知道的问题是如何拦截错误。 您知道当出现错误时,它是如何记录到out.log的吗?现在,我是tail-f out.log,监视错误。我不能整天坐在家里做这件事。我希望任何时候在out.log中出现错误时都能通

假设我的node.js应用程序正在运行。如果有错误(我指的是所有错误,而不仅仅是网络错误。如果出现错误,它就算数),我如何调用函数向我发送电子邮件

基本上,在我想把它写到err.out之前,我想先发一封电子邮件给我

我正在使用node.js和express

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

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

查找节点

范例

var email=require(“./path/to/emailjs/email”);
var server=email.server.connect({
用户:“用户名”,
密码:“密码”,
主机:“smtp.gmail.com”,
ssl:true
});
//发送消息并获取包含错误或已发送消息详细信息的回调
server.send({
文字:“我希望这能奏效”,
来自:“你”,
致:“某人,另一个人”,
抄送:“其他”,
主题:“测试emailjs”
},函数(err,message){console.log(err | | message);});

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

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

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

然后,每个库中对console.error()进行的每个调用将调用您的特定实现send out Mail;)

既然所有日志条目都存储在数量有限的日志文件中,那么为什么不设置一个文件更改监视器并将新行邮寄给您呢?这样,您还可以使用最后一小时/天/的摘要日志条目来安排时间间隔。。。这比单独打开邮件要容易得多。

我知道如何发送电子邮件。但我想知道如何拦截它。我把这个放在哪里?在我的app.js中?(我正在使用Node.js Express)甚至其他东西(mongoose、redis)也会经历这种情况吗?(如果我把它放在app.js???)你可以放在任何地方(但最好尽早),是的,任何库中每次调用console.error()都会调用你的特殊console.error()函数。为什么不直接用自定义构造函数覆盖
error
,或者将你的解决方案添加到我的Node+Express应用程序中呢。但它不会像预期的那样执行自定义操作,但仍会在终端中记录错误。我按照你的指示做了,但还是不行。我做错什么了吗?