【发布时间】:2012-03-14 12:33:36
【问题描述】:
我一直在使用 log4net 来记录我们的 ASP.NET 网站的日志消息,最近我想添加有关发生错误的页面/处理程序的信息。因此,我决定将以下行添加到 Global.asax:
void Application_BeginRequest(object sender, EventArgs e)
{
log4net.ThreadContext.Properties["page"] = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
}
同样,我在我的转换模式中添加了%property{page}:
<conversionPattern value="%newline%date %-5level %property{page} - %message%newline%newline%newline" />
这适用于单个请求。但后来我注意到在我的日志中页面属性可能会在 ASP.NET 请求期间发生变化。我登录了一个 ASHX 处理程序,在其处理过程中,页面属性将更改为指向 ASPX 页面的不同值。我得出的结论是,有另一个请求来到 ASP.NET,它的BeginRequest 被执行,log4net.ThreadContext 中的静态页面属性被更改为另一个值。
现在,我想维护每个请求的页面属性,以便我可以将执行页面的路径一致地记录到日志中。我试图找到答案,但我一无所获。解决此问题的推荐方法是什么?我确信这是 Web 服务器事件日志的非常基本的功能。
【问题讨论】:
标签: asp.net properties log4net httpcontext