2012-06-01 66 views
3

我試圖找到一種方法來記錄被用於比賽從MVC3路徑正則表達式(即/api/person/{personid}/address/{addressid}IIS的.Net的HttpModule高級日誌記錄字段

我發現,您可以在使用HttpResponse.AppendToLog爲了將一些東西附加到在IIS日誌CS-URI查詢,但這是相當哈克,使處理日誌一pita.This使我HttpModules和IIS7高級日誌記錄。

我現在的理解是,我可以場提供給高級日誌從HttpModule。因此,我應該能夠查找HttpContext中的Route對象使用的正則表達式,並將該對象公開爲高級日誌記錄可以使用並記錄的字段。

我的問題是我有問題搞清楚如何將數據公開爲高級日誌記錄可以使用的自定義HttpModule中的字段。

我需要有一個事件處理程序LogRequest?如果我這樣做,我應該在事件處理程序中做些什麼來使其成爲高級日誌消耗?

任何指針,代碼示例和/或文檔鏈接將不勝感激。

順便說一句,如果你知道的任何文件,說明/列出了可用的「發佈」的從安裝在IIS7默認模塊領域我會很感激的鏈接。

回答

2

好的,我最終處理這個問題的方式是創建一個HttpModule,它將從HttpContext中拉出路由模式並將其放入服務器變量中,如URL_PATTERN

一旦其server_variables IIS7高級日誌可以得到阿霍德並保存它。如果當前請求沒有路由,它只會使用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中完成一個行爲,但是我們有一堆經典的asp和MVC3運行(我知道我知道...),並且這將處理所有這些。

此外,您可以使用RaiseTraceEvent顯然「發佈」模塊中的一個字段,然後IIS7高級日誌記錄可以獲得預測結果,但它給了我適合嘗試找出它的方法,因此我只是使用我所擁有的。

我已經張貼了這個問題,所有的地方引用福布和MVC3和我已經得到很少或幾乎沒有興趣,這真的驚訝了我。如果你無法輕易確定正在使用的路線,人們如何在日誌中查詢信息。

https://gist.github.com/2854760

我就離開這個這裏.... 還有幾個unanwsered環節進行,所以我會離開這個崗位,但不能將其標記的anwser。