【发布时间】:2019-11-20 12:09:19
【问题描述】:
我在我的应用程序中配置了 Elmah,当我查看错误日志时,我看到在用户部分 Elmah 记录了一个 ID,而不是当前登录的用户名,如下所示。
我想知道是否有一个地方可以更改这些服务器变量的值的设置方式,以便我可以在 Auth_User 变量中输入电子邮件或正确的用户名。查看 Elmah 文档我只能想找出如何过滤掉错误日志,但实际上不知道如何在日志之前更新服务器变量值。
【问题讨论】:
我在我的应用程序中配置了 Elmah,当我查看错误日志时,我看到在用户部分 Elmah 记录了一个 ID,而不是当前登录的用户名,如下所示。
我想知道是否有一个地方可以更改这些服务器变量的值的设置方式,以便我可以在 Auth_User 变量中输入电子邮件或正确的用户名。查看 Elmah 文档我只能想找出如何过滤掉错误日志,但实际上不知道如何在日志之前更新服务器变量值。
【问题讨论】:
我已经写了一篇关于这个的博客文章: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 属性的行将取决于您的应用程序。但该代码将允许您设置用户名、用户名或电子邮件等内容。
【讨论】: