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

Mat*_*atm 3 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);
Run Code Online (Sandbox Code Playgroud)

现在,我需要写console.log(err)我的所有路线.我更愿意err每次发送500时自动记录变量.有没有办法挂钩到Express并自动记录调用堆栈和/或err所有500个响应?

sca*_*tag 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);
Run Code Online (Sandbox Code Playgroud)