3

ValidationFeature プラグインを有効にしている場合、ResponseStatus に入力される検証結果をログに記録する方法はありますか?

私が理解できることから、入ってくるリクエストはすべて検証され、検証に合格するとサービスに送られます。リクエスト フィルタを使用すると、着信するリクエストをログに記録できますが、レスポンス フィルタを使用すると、有効なリクエストのみをログに記録できます。

すべての応答、特に検証エラーの結果として返される HttpStatus 400 (Bad request) をログに記録しようとしています。

また、RequestLog プラグインを少し試してみましたが、ログに記録されるのは有効な要求 (つまり、サービスに送信された要求) のみであることを理解しました。

私が言おうとしていることを理解していただければ幸いです。

4

2 に答える 2

4

7digitalがロギングをサポートするためにServiceStackの検証機能をどのようにカスタマイズしたかを確認してください。

関連機能

新しいAPIは、wikiで読むServiceRunnerことができる独自のイベントフックと例外フックを追加するためにオーバーライドできるという概念をサポートしています。

最近処理されたリクエストの詳細を期待できる組み込みのリクエストロガーもあります。

検証機能でのログ記録を確認したい場合は、GitHubプロジェクトで問題を作成してください。

于 2012-09-27T16:27:16.073 に答える
1

ValidationFeature プラグインからエラーをログに記録する簡単な方法は次のとおりです。

public override void Configure(Container container)
{
    ...etc...

    Plugins.Add(new RequestLogsFeature() { etc });
    Plugins.Add(new ValidationFeature()
    {
        ErrorResponseFilter = MyValidationError
    });

    ...etc...
}

public object MyValidationError(ValidationResult validationResult, object errorDto)
{
    Container.Resolve<IRequestLogger>().Log(null, null, errorDto, TimeSpan.Zero);
    return errorDto;
}

ただし、私の場合、サービス自体で検証エラーをログに記録するのは適切な場所ではないことに気付きました。代わりに、サービスを使用するアプリケーションでこれらのエラーをログに記録します。

于 2015-11-23T20:58:29.190 に答える