在我们的restify应用程序中,当我们将错误传递给next
时,会返回一个通用的500错误,这一切都很好。但是,我还需要在某处记录错误的详细信息,以便我知道发生了什么。
以前,我在一个快速应用程序上工作,集中的错误处理中间件使我们能够在接收错误时执行任何代码,例如日志记录。
"改善方式"集中记录错误详细信息?我不想在整个应用程序中撒上日志记录语句。
答案 0 :(得分:5)
一旦为请求完成所有其他路由处理程序,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)
答案 1 :(得分:2)
收听'after'
的另一种方法是收听'restifyError'
:
server.on('restifyError', (req, res, err, cb) => {
req.log.error(err)
return cb();
});