在Express中自动记录HTTP 500响应?

4
我的Express应用中常见的模式是在所有路由中包含以下内容:
//...code which could result in an err
if (!err) return res.send(200);
console.log(err); // Would prefer to omit this line
res.send(500);

现在,我需要在所有我的路由中写入console.log(err)。我更希望每次发送500时自动记录err变量。有没有办法连接到Express并自动记录整个调用栈和/或所有500响应的err呢?

1个回答

7

从你的解释中,似乎你在所有路由中都包含了错误处理。你应该创建一个全局拦截器错误处理程序,它可以为你执行日志记录,并仍然是基本的错误处理程序,如果你有500错误类型。

//if your express var is app

var errorHandler = function(err, req, res, next){
   console.log(err.stack);
   res.send(500);
   // or you could call res.render('error'); if you have a view for that.
};

app.use(app.router); // this has to come before your interceptors
app.use(notFound);  // your page not found interceptor
app.use(errorHandler);

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