ELMAH not logging errors except for 404's
本文关键字:for not logging errors except ELMAH | 更新日期: 2023-09-27 17:58:52
除了404
错误之外,我无法让ELMAH将错误记录到我的AppData
文件夹中。我不确定可能是什么问题。我猜是因为我有<customErrors mode="RemoteOnly" defaultRedirect="~/Views/Shared/Error.cshtml">
,但我试过做这里录制的内容,但没有任何运气。这是我的web.config(至少是使用ELMAH的任何关键内容):
<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>
<appSettings>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
<add key="elmah.mvc.allowedRoles" value="Programmers" />
<add key="elmah.mvc.allowedUsers" value="*" />
<add key="elmah.mvc.route" value="elmah" />
</appSettings>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<modules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data"/>
</elmah>
这是我的FilterConfig.cs
:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ElmahHandleErrorLoggerFilter());
filters.Add(new HandleErrorAttribute());
}
}
和我的自定义Elmah处理程序:
public class ElmahHandleErrorLoggerFilter : System.Web.Mvc.IExceptionFilter
{
public void OnException(ExceptionContext context)
{
//Log only handled exceptions, because all others will be caught by ELMAH
if (context.ExceptionHandled)
{
ErrorSignal.FromCurrentContext().Raise(context.Exception);
}
}
}
有没有想过我可能做错了什么,或者我错过了什么?
基本上,ELMAH默认情况下会记录所有未处理的异常,也会记录所有请求。
您甚至不需要任何日志过滤器。
您所需要的只是将runAllManagedModulesForAllRequests="true"
添加到ELMAHmodules
部分:
<modules runAllManagedModulesForAllRequests="true">
这将允许ELMAH处理所有请求并记录所有错误。