【问题标题】:Multiple ELMAH Filter Conditions多个 ELMAH 过滤条件
【发布时间】:2011-07-25 02:54:59
【问题描述】:

我想知道是否有一种方法可以编写 ELMAH 在以下逻辑下过滤掉错误日志:

如果favicon.ico 上的错误是 404/1.xml 上的错误是 404 /2.xml 上的错误是 404

我已经找到了在favicon.ico 上执行此操作的方法,如图所示:

 <errorFilter>
  <test>
    <and>
      <equal binding="HttpStatusCode" value="404" type="Int32" />
      <regex binding="Context.Request.ServerVariables['URL']" pattern="/favicon\.ico(\z|\?)" />
    </and>
  </test>
</errorFilter>

但由于某种原因,我无法理解如何针对 OR 条件执行此操作。任何帮助将不胜感激。

【问题讨论】:

    标签: model-view-controller elmah


    【解决方案1】:

    以下内容应该可以解决问题或帮助您入门:

    <errorFilter>
      <test>
        <and>
          <equal binding="HttpStatusCode" value="404" type="Int32" />
          <or>
            <regex binding="Context.Request.ServerVariables['URL']" 
                   pattern="/favicon\.ico(\z|\?)" />
            <regex binding="Context.Request.ServerVariables['URL']" 
                   pattern="/[1-2]\.xml(\z|\?)" />
          </or>
        </and>
      </test>
    </errorFilter>
    

    基本上,这将过滤 HTTP 状态代码为 404 的错误并且or 元素下分组的正则表达式模式之一匹配请求 URL。

    【讨论】:

    • 你好 Atif,我试过了,但它似乎不起作用。我想确保我处理得当。这是我无法解析 URL 时抛出异常的方法。 throw new HttpException(404, String.Format("找不到路径'{0}'的控制器或它没有实现 IController。", requestContext.HttpContext.Request.Path));
    • 您是否注册了 Elmah.ErrorFilterModule 模块,它是否出现在模块部分中的所有其他 ELMAH 模块之后?
    • 是的,我已经正确配置了一切。注意到一件有趣的事情,声明式 web.config 过滤不起作用,但编程部分确实起作用。我已经使用程序化方法解决了这个问题,但很想听听任何进一步的见解。如果我只使用没有任何 OR/regex 条件的 404 块(即阻止所有 404),那也可以。如果我发现任何其他内容,我会做一些进一步的研究并添加我的评论。
    • 程序化版本是什么样的?您是否也在使用相同的正则表达式模式来查找 URL 匹配项?
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多