我的商店在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
输出如: 总命中数= 3
答案 0 :(得分:5)
好的,我最终处理这个问题的方法是创建一个HttpModule,它将从HttpContext中提取路由模式,并将其作为URL_PATTERN放入服务器变量中。一旦它在server_variables IIS高级日志记录可以得到它并保存它。如果当前请求没有路由,它将只使用url的正常本地部分(因此它将匹配日志中的cs-uri-stem)。
现在sql / log解析器查询: 从(yourlogs)中选择url_pattern,count(url_pattern),其中(开始/结束)组之间的时间戳由url_pattern order by count(url_pattern)desc 将告诉我应用程序中每个端点的点击次数。
这显然可以在fubu行为中完成,但我们已经有一堆经典的asp和MVC3在运行(我知道我知道......),这将处理所有这些。此外,您可以使用RaiseTraceEvent从模块中“发布”一个字段,然后IIS高级日志记录可以得到它,但是它让我很适合尝试解决它,所以我只是选择了我所拥有的。
我在引用fubu和MVC3的地方发布了这个问题,我几乎没有兴趣,这让我很惊讶。如果你不能轻易确定使用的路线,人们如何在日志中查询信息。
答案 1 :(得分:0)
您可以使用Notepad ++的正则表达式搜索功能。 This文章可能有所帮助。