我有一个配置了 Elmah 并正常工作的 Web Api 应用程序,日志正常创建。
为了从日志中隐藏/删除敏感数据,我尝试了这个,但它不适用于我的 Web Api 控制器。仅当 MVC 管道(项目中有 MVC 和 Web API 控制器)中发生错误时才会触发过滤器。
我也检查了这个问题,但我的配置文件似乎没问题:
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
[...]
<location path="." inheritInChildApplications="false">
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
[..]
</system.web>
</location>
[...]
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以通过以下逻辑编写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>
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,我无法理解如何根据OR条件进行操作。任何帮助都感激不尽。