1

私は NodeJS と Express を使用してアプリを構築しており、最近 Raygun を使用してエラー処理を組み込みました。

Raygun は、特に Express で使用するためのエラー ハンドラーを提供しますが、ミドルウェアの最後に実行する必要があります。今私は持っています:

//Log the domain id, req, and error to the console
app.use(function errorHandler(err, req, res, next) {
  console.log('error on request %d %s %s: %s', process.domain.id, req.method, req.url, err)
  next(err)
})
//Log the error to Raygun
//!Must be last piece of middleware to be defined
app.use(raygunClient.expressHandler);

しかし問題は、サーバーが引き続き実行され、アプリが不明な状態のままになる可能性があることです。サーバーを正常にシャットダウンしたいのですが、追加すると

//Shuts down the process
app.use(function errorHandler(err, req, res, next) {
  process.exit()
})

その場合、Raygun のエクスプレス ハンドラは機能しません。

どうする?

4

1 に答える 1

2

ライブラリraygunClient.expressHandlerで定義されているものと同じように、カスタムを定義できます。

app.use(function errorHandler(err, req, res, next) {
  console.log('error on request %d %s %s: %s', process.domain.id, req.method, req.url, err)
  next(err)
}) 

app.use(function (err, req, res, next) {
  raygunClient.send(err, {}, function (response) {
    //all done
    process.exit(1);
  }, req);
  next(err);
});

また、デフォルトのエラー ハンドラでは不可能だったcustomData、2 番目の引数と5 番目の引数として送信することもできます。tags

于 2015-07-12T20:01:37.147 に答える