2

Restlet アプリケーションで、500 番台の HTTP エラーを生成するリソースのスタック トレースを (コンテキストのロガーを使用して) ログに記録したいと考えています。私が知る限り、これはデフォルトの動作ではありません。

言い換えれば、私の Resource クラスには、represent メソッドと acceptRepresentation メソッドにロガー コードをまったく持たせたくありません。それらは単に ResourceException をスローするだけです。ロギング ロジックをすべての Resource インスタンスで一元的に処理する必要があります。

これを行うためのいくつかのハックな方法 (たとえば、ログ ロジックを処理する Resource サブクラスから継承する) を考えることができますが、これはフレームワークに組み込む必要があるように思えます。

私は何が欠けていますか?

4

2 に答える 2

3

StatusServiceを見てください:

エラーステータスを処理するサービス。アプリケーションまたは Restlet コード内で例外がスローされた場合、このサービスが有効になっている場合は、このサービスによってインターセプトされます。例外またはエラーがキャッチされると、最初に getStatus(Throwable, Request, Response) メソッドが呼び出され、応答に設定するステータスが取得されます。[...]

これを先月発見したばかりで、多くのエラー処理コードを実際に圧縮し、例外が処理され、均一に処理されるようにすることができました。

于 2010-01-19T01:24:14.803 に答える
1

これを行うためにフィルターを使用できる場合があります。afterHandle() では、ステータス コードをチェックしてから、例外をログに記録しようとすることができます。ただし、フィルターで例外を使用できるかどうかはわかりません。

于 2010-01-19T14:04:16.883 に答える