大佬教程收集整理的这篇文章主要介绍了如何设置特定于ASP.NET请求的log4net上下文属性?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void Application_Beginrequest(object sender,EventArgs E) { log4net.ThReadContext.Properties["page"] = httpContext.Current.request.AppRelativeCurrentexecutionFilePath; }
<conversionPattern value="%newline%date %-5level %property{pagE} - %message%newline%newline%newline" />
这对单个请求工作正常.但是在我的日志中,我注意到在ASP.NET请求期间页面属性可能会发生更改.我已经登录一个ASHX处理程序,在处理过程中,页面属性将更改为指向ASPX页面的其他值.我得出结论,ASP.NET有另一个请求,它的Beginrequest被执行,并且log4net.ThReadContext中的静态页面属性被更改为另一个值.
现在,我想维护每个请求的page属性,以便我可以一直将执行页面的路径记录到日志中.我试图找到一个答案,但我没有出来.推荐的方法来解决这个问题?我相信这是Web服务器事件记录的基本功能.
以下GetCurrentPage类通过覆盖其ToString方法来实现log4net手动调用“Active Property Value”:
public class GetCurrentPage { public override String ToString() { if (null != httpContext.Current) { return httpContext.Current.request.AppRelativeCurrentexecutionFilePath; } return String.Empty; // or "[No Page]" if you prefer } }
在Global.asax的Application_Start中,在log4net的GlobalContext中注册此类.
protected void Application_Start(object sender,EventArgs E) { XmlConfigurator.Configure(); GlobalContext.Properties["page"] = new GetCurrentPage(); }
当log4net写入该行的%属性{pagE}部分时,它将调用GetCurrentPage类的ToString方法,该方法将查找当前请求中的值.
以上是大佬教程为你收集整理的如何设置特定于ASP.NET请求的log4net上下文属性?全部内容,希望文章能够帮你解决如何设置特定于ASP.NET请求的log4net上下文属性?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。