从IIS日志中提取不同的RESTful MVC路由

Gru*_*mle 3 rest iis-logs fubumvc asp.net-mvc-3

我的商店在IIS 7上使用MVC3/FUBU.我最近投入了一些工作,我想使用日志解析器从IIS日志中收集指标.我以前做了很多次但是因为MVC3路由的形式是/ api/person //地址/日志保存/ api/person/123/address/456在uristem列中.

有没有人对如何从IIS日志中获取有关特定路由的数据有任何想法?

作为一个例子:日志像这样:

cs-uri-stem
/api/person/123/address/456
/api/person/121/address/33
/api/person/1555/address/5555
Run Code Online (Sandbox Code Playgroud)

输出如:总命中数= 3

Gru*_*mle 5

好吧,我最终处理这个问题的方法是创建一个HttpModule,它将从HttpContext中提取路由模式,并将其作为URL_PATTERN放入服务器变量中.一旦它在server_variables IIS高级日志记录可以得到它并保存它.如果当前请求没有路由,它将只使用url的正常本地部分(因此它将匹配日志中的cs-uri-stem).

现在sql/log解析器查询:从(yourlogs)中选择url_pattern,count(url_pattern),其中(start/end)group by url_pattern order by count(url_pattern)desc之间的时间戳将返回我的每个端点的命中数应用程序.

这显然可以用fubu行为来完成,但是我们有一堆经典的asp和MVC3在运行(我知道我知道......),这将处理所有这些.你也可以使用RaiseTraceEvent从一个模块"发布"一个字段,然后IIS高级日志可以得到它,但是它让我适合尝试解决这个问题所以我只是选择了我所拥有的东西.

我已经在引用fubu和MVC3的地方发布了这个问题,我几乎没有兴趣,这让我很惊讶.如果您无法轻易确定所使用的路线,人们如何在日志中查询信息.

https://gist.github.com/2854760