3

MVC3 からのルートの一致に使用された正規表現をログに記録する方法を見つけようとしています (つまり/api/person/{personid}/address/{addressid})

IIS ログのcs-uri-queryHttpResponse.AppendToLogに何かを追加するために使用できることがわかりましたが、これはかなりハックであり、ログの処理が面倒です。HttpModules

私の現在の理解では、HttpModule. HttpContextそのため、Route オブジェクトで使用される正規表現を検索し、それを Advanced Logging が使用してログに記録できるフィールドとして公開できるはずです。

私の問題は、HttpModuleAdvanced Logging が消費できるカスタムでデータをフィールドとして公開する方法を正確に理解するのに問題があることです。

のイベント ハンドラーが必要LogRequestですか? その場合、イベント ハンドラーで高度なログを使用できるようにするにはどうすればよいですか?

ポインタ、コード サンプル、および/またはドキュメントへのリンクは大歓迎です。

余談ですが、IIS7 にインストールされている既定のモジュールから利用可能な「公開」フィールドを説明/一覧表示するドキュメントを知っている場合は、リンクをいただければ幸いです。

4

1 に答える 1

2

OK、これを処理する最終的な方法は、HttpModuleからルート パターンをHttpContext取得し、サーバー変数に として配置するを作成することURL_PATTERNです。

server_variablesIIS7 Advanced Logging に入ると、それを取得して保存できます。現在のリクエストにルートがない場合は、URL の通常のローカル部分が使用されます (ログの cs-uri-stemと一致します)。

SQL /ログパーサーのクエリ:

select url_pattern,count(url_pattern) from (yourlogs) where timestamp between (start/end) group by url_pattern order by count(url_pattern) desc

アプリの各エンドポイントのヒット数が返されます。

これは明らかに fubu a 動作で実行できますが、多くの古典的な ASP と MVC3 が実行されており (私は知っています... )、これはそれらすべてを処理します。

また、IIS7 Advanced Logging を使用してモジュールからフィールドを「公開」することもできるRaiseTraceEventようですが、それを理解するのに苦労したので、私は自分が持っているものを使いました。

fubu と MVC3 を参照してこの質問をいたるところに投稿しましたが、ほとんどまたはまったく興味がなく、本当に驚きました。使用されているルートを簡単に判断できない場合、人々はどのようにログを調べて情報を求めますか。

https://gist.github.com/2854760

これはここに残しておきます.... これにはまだ未解決の部分がいくつかあるので、この投稿を残しますが、回答としてマークしません。

于 2012-06-01T20:54:05.663 に答える