gpt4 book ai didi

.net - IIS .Net HttpModule 高级日志记录字段

转载 作者:行者123 更新时间:2023-12-01 15:49:18 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来记录用于匹配来自 MVC3 的路由的正则表达式(即 /api/person/{personid}/address/{addressid})

我发现您可以使用 HttpResponse.AppendToLog 将某些内容附加到 IIS 日志中的 cs-uri-query 上,但这非常 hacky并使处理日志成为一个皮塔饼。这使我了解了 HttpModules 和 IIS7 高级日志记录。

我目前的理解是,我可以使字段对 HttpModule 中的高级日志记录可用。因此,我应该能够在 HttpContext 中查找 Route 对象使用的正则表达式,并将其公开为 Advanced Logging 可以使用和记录的字段。

我的问题是,我在确定如何将数据公开为高级日志记录可以使用的自定义 HttpModule 中的字段时遇到问题。

LogRequest 是否需要事件处理程序?如果我这样做,我应该在事件处理程序中做什么才能使其可用于高级日志记录?

任何指针、代码示例和/或文档链接都将不胜感激。

顺便说一句,如果您知道任何解释/列出 IIS7 中安装的默认模块的可用“已发布”字段的文档,我将不胜感激。

最佳答案

好的,我最终处理这个问题的方法是创建一个 HttpModule这将从 HttpContext 中提取路由模式并作为 URL_PATTERN 放入服务器变量中.

一旦进入server_variables IIS7 Advanced Logging 可以获取并保存它。如果当前请求没有路由,它将只使用 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 从模块中“发布”字段然后可以获取 IIS7 高级日志记录,但它让我无法理解它,所以我只好使用我现有的东西。

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

https://gist.github.com/2854760

我就把这个留在这里....还有几个 Unresolved 部分,所以我将离开这篇文章,但不会将其标记为已回答。

关于.net - IIS .Net HttpModule 高级日志记录字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com