如何处理(即记录)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();
});