我一直在使用log4net來記錄我們的ASP.NET網站的日誌消息,最近我想添加有關發生錯誤的頁面/處理程序的信息。因此,我決定將下列行添加到Global.asax中:如何設置特定於ASP.NET請求的log4net上下文屬性?
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服務器事件日誌的基本功能。
這是天才。 – 2016-10-22 06:23:13