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