更改在 Elmah 中记录的服务器变量值

Change server variable values that are logged in Elmah

我在我的应用程序中配置了 Elmah,当我查看错误日志时,我看到在用户部分 Elmah 记录了一个 ID 而不是当前登录的用户名,如下所示。

我想知道是否有地方可以更改这些服务器变量值的设置方式,这样我就可以在 Auth_User 变量中输入电子邮件地址或正确的用户名。查看 Elmah 文档我只能弄清楚如何过滤掉错误日志记录,但实际上不知道如何在记录之前更新服务器变量值。

我写了一篇博客 post 就是关于这个的:Enrich ELMAH errors using error filtering hook

总而言之,使用 ELMAH 的错误过滤来覆盖记录到 ELMAH 的消息。

Global.asax.cs中添加以下代码:

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args)
{
    var httpContext = args.Context as HttpContext;
    if (httpContext != null)
    {
        var error = new Error(args.Exception, httpContext);
        error.User = GetUserFromDatabase();
        ErrorLog.GetDefault(httpContext).Log(error);
        args.Dismiss();
    }
}

如何实现在 error 上设置 User 属性 的行将取决于您的应用程序。但代码会让您设置用户名、用户名或电子邮件等内容。