如何处理(即记录)restify 中的错误
How to handle (i.e. log) errors in restify
在我们的 restify 应用程序中,当我们将错误传递给 next
时,会返回一个通用的 500 错误,这一切都很好。但是,我还需要在某个地方记录错误的详细信息,以便我知道发生了什么。
之前,我开发了一个快速应用程序,集中式错误处理中间件使我们能够在收到错误时执行任意代码,例如日志记录。
集中记录错误详细信息有什么 "restify way"?我不想在整个应用程序中散布日志语句。
一旦请求的所有其他路由处理程序完成,Restify 服务器对象将发出一个 'after'
事件。您可以将日志记录代码放在 'after'
事件处理程序中:
var svr = restify.createServer()
.get('/hello-world', hello_world_hndlr)
.on('after', function (req, resp, route, err) {
// logging here
})
.listen(SVR_PORT)
听 'after'
的另一种方法是听 'restifyError'
:
server.on('restifyError', (req, res, err, cb) => {
req.log.error(err)
return cb();
});
在我们的 restify 应用程序中,当我们将错误传递给 next
时,会返回一个通用的 500 错误,这一切都很好。但是,我还需要在某个地方记录错误的详细信息,以便我知道发生了什么。
之前,我开发了一个快速应用程序,集中式错误处理中间件使我们能够在收到错误时执行任意代码,例如日志记录。
集中记录错误详细信息有什么 "restify way"?我不想在整个应用程序中散布日志语句。
一旦请求的所有其他路由处理程序完成,Restify 服务器对象将发出一个 'after'
事件。您可以将日志记录代码放在 'after'
事件处理程序中:
var svr = restify.createServer()
.get('/hello-world', hello_world_hndlr)
.on('after', function (req, resp, route, err) {
// logging here
})
.listen(SVR_PORT)
听 'after'
的另一种方法是听 'restifyError'
:
server.on('restifyError', (req, res, err, cb) => {
req.log.error(err)
return cb();
});