3

我的商店在 IIS 7 上使用 MVC3/FUBU。我最近将一些东西投入生产,我想使用日志解析器从 IIS 日志中收集指标。我以前做过很多次,但是因为 MVC3 路由的形式是 /api/person//address/,所以日志将 /api/person/123/address/456 保存在 uritem 列中。

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

例如:像这样记录:

cs-uri-stem
/api/person/123/address/456
/api/person/121/address/33
/api/person/1555/address/5555

输出如:总点击数 = 3

4

2 回答 2

5

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

现在 sql/log 解析查询: 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 从模块中“发布”一个字段,然后 IIS 高级日志记录可以获取该字段,但它让我很想弄清楚它,所以我只是使用我所拥有的。

我已经在所有地方发布了这个问题,引用了 fubu 和 MVC3,但我几乎没有兴趣,这真的让我感到惊讶。如果您无法轻松确定正在使用的路线,人们如何在他们的日志中查找信息。

https://gist.github.com/2854760

于 2012-06-01T19:55:05.020 回答
0

您可以使用 Notepad++ 的正则表达式搜索功能。这篇文章可能会有所帮助。

于 2012-05-30T02:17:23.847 回答