3

したがって、Rails アプリでキャッチされない例外がある場合は、ログに記録され、スタック トレースが記録されます。

偉大な。しかし、実際には「INFO」レベルのログをオフにして、WARN/ERROR/FATAL のみをログに記録したいと考えています。

つまり、キャッチされていない例外については、例外名とスタック トレースだけでなく、現在の requestについてもっと多くのログを記録することが本当に必要です。リクエスト パラメータ、リクエスト URI、さらにはリクエスト クライアント IP とユーザー エージェントが必要です。

Rails のどの部分をカスタマイズすればよいかわかりません。構成だけでも、メソッドをオーバーライドしても、モンキー パッチを適用しても、これが実際にどこで発生するのかはわかりません。

それはミドルウェアでオフになっているからですか?ばっ!いずれにせよ...実際にこれを行う最も簡単な方法についてのヒントはありますか?

(Rails がこれを簡単にしないのは驚くべきことですよね? それほど珍しいことではないように思えますか? 関心のあるすべての人が、ログ ファイルの代わりにこれらのことをキャッチするためにサード パーティのプラットフォームを使用しているからですか? 私はそうではありません。へへ)

4

2 に答える 2

7

rescue_fromですべての例外をキャッチすることにより、追加の例外処理を追加できます。

たとえば、これを application_controller.rb に追加できます。

rescue_from Exception, :with => :internal_error

def internal_error(e)
   logger.error request.fullpath
   raise e
end

元の例外を再発生させることで、レールも例外を認識できるようになります。

于 2013-01-25T19:32:09.653 に答える
2

https://github.com/rails/rails/issues/9343を参照してください。これはまだサポートされていません。DebugExceptions ミドルウェアがこれをログに記録しているようです。私が見た唯一の解決策は、config.middleware.swap を使用してこのミドルウェアを交換し、それをカスタム バージョンに置き換えることです。

于 2013-07-17T12:20:26.980 に答える