2011-03-29 81 views
0

我想知道,如果有,我可以写ELMAH以下逻辑下过滤掉错误日志的方式:多ELMAH筛选条件

如果错误是404 favicon.ico误差404在/1.xml误差为404 /2.xml

我发现只是做它的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条件。任何帮助都感激不尽。

回答

3

下应该做的伎俩或以其他方式让你开始:

<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。

+0

你好Atif,我试过了,它似乎没有工作。我想确保我处理这个权利。这是我无法解析URL时如何抛出异常。抛出新的HttpException(404, String.Format(“无法找到路径'{0}'的控制器,或者它没有实现IController。”, requestContext.HttpContext.Request.Path)); – 2011-03-31 07:18:14

+0

您是否已经注册了Elmah.ErrorFilterModule模块,并且它在模块部分中的所有其他ELMAH模块之后出现? – 2011-03-31 19:01:46

+0

是的,我已经配置正确。注意到一件有趣的事情,声明式web.config过滤不起作用,但编程部分确实起作用。我已经使用编程方法解决了这个问题,但很想听到任何进一步的见解。如果我只是使用没有任何OR /正则表达式条件的404块(即阻塞所有的404),那也可以。如果我找到其他的东西,我会做一些进一步的研究并添加我的评论。 – 2011-04-04 06:06:05