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

时间:2013-01-14 05:02:49

标签: node.js express

我的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并自动记录调用堆栈和/或err所有500个响应?

1 个答案:

答案 0 :(得分:6)

根据您的解释,您似乎在所有路线中都包含错误处理。 您可能应该创建一个全局拦截器错误处理程序,它可以为您执行日志记录,如果您有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);