5

だから、私はしばらく静かにこれを見てきました。Node.js 0.8.15 の時点でEvent: 'uncaughtException'http ://nodejs.org/api/process.html#process_event_uncaughtexception で次のように述べています。

Don't use it, use domains instead. If you do use it, restart your application after every unhandled exception!

また、http: //nodejs.org/api/domain.htmlのドメインは次のように述べています。

Stability: 1 - Experimental

(また、彼らは私のために働くことを拒否します-私のアプリはまだクラッシュします)

私がやろうとしているのは、Node.js + Express アプリがクラッシュしないようにすることだけです。

Node.js をクラッシュさせずに、すべてのエラー (構文エラーのような予想外のもの) をファイルに記録することに成功した実際の方法はありますか?

理論的な答えをたくさん聞いたことがありますが、実際に機能するコードはありますか?

4

1 に答える 1

9

私は同様の状況に遭遇し、キャッチされていない例外を使用しています。きれいではないかもしれませんが、追加のツールを使用すると、最終的には良い結果が得られると思います.

フォーエバーとウィンストンを使う

クラッシュさせて

アプリケーションを維持したいだけなら、 NodeJitsu から永久に使用することを検討してください。厄介なバグが発生した場合にアプリを再起動する必要がある回数のしきい値を設定できます。キャッチされない例外が発生した場合にアプリのサイクルを許可しないと、アプリケーションが無効な状態になり、さらに多くの例外が発生する可能性があります。クラッシュさせて、永遠に再起動してもらいませんか。

終了前のロギング

エラーをキャッチしてログに記録するには、winstonを使用して、キャッチされていない例外をキャッチしてログに記録し、終了してみてください。この正確なシナリオを処理する方法を説明している readme の Winston での Uncaught Exceptions の処理に関するセクションを参照してください。winston がファイルにログを記録している場合は、それを参照して、アプリが失敗する頻度とその理由を確認できます。

結果

この 2 つを組み合わせることで、参照できるキャッチされていない例外ログ ファイルをセットアップし、ほとんどの状況でアプリを稼働させ続け、アプリケーションを無効な状態にする可能性のある例外を無視することを回避できるはずです。

アレックス

于 2012-12-13T18:32:01.073 に答える