4

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);

今、私console.log(err)はすべてのルートを書く必要があります。err500 が送信されるたびに変数を自動的にログに記録することをお勧めします。Express にフックして、コール スタックやerr500 件すべての応答を自動的にログに記録する方法はありますか?

4

1 に答える 1

7

あなたの説明から、すべてのルートにエラー処理が含まれているようです。ロギングを実行できるグローバル インターセプタ エラー ハンドラを作成し、エラー タイプが 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);
于 2013-01-14T05:16:00.877 に答える