更改在 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
属性 的行将取决于您的应用程序。但代码会让您设置用户名、用户名或电子邮件等内容。
我在我的应用程序中配置了 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
属性 的行将取决于您的应用程序。但代码会让您设置用户名、用户名或电子邮件等内容。