我的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个响应?
答案 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);