gpt4 book ai didi

c# - ELMAH 不记录除 404 之外的错误

转载 作者:行者123 更新时间:2023-11-30 17:48:22 25 4
gpt4 key购买 nike

我无法让 ELMAH 将错误记录到我的 AppData404 以外的任何异常的文件夹错误。我不确定可能是什么问题。我猜是因为我有 <customErrors mode="RemoteOnly" defaultRedirect="~/Views/Shared/Error.cshtml"> ,但我已尝试执行记录的操作 HERE并没有任何运气。这是我的 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" 添加到 ELMAH modules 部分:

 <modules runAllManagedModulesForAllRequests="true">

这将允许 ELMAH 处理所有请求并记录所有错误。

关于c# - ELMAH 不记录除 404 之外的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23157814/

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