我想弄清楚如何使用ThreadContext.Properties設置每個用戶會話。log4net GlobalContext
當用戶在網站上登錄時,用戶標識存儲在會話中。這個值 然後我想在成功登錄後追加到ThreadContext.Properties [「UserID」]。
我使用adonetappender將日誌條目保存到數據庫,並使用%property {userid}來檢索值。但有時這個值讀取爲空。
所以基本上我想要的是:
1),我想登錄這些網頁創建
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
。
2)成功登錄後,我需要在ThreadContext.Properties [「UserID」]中存儲一個始終存在於整個用戶會話中的值,並且可以從我登錄的頁面以及Application_Error 。)在global_asax中。無論如何,這個ThreadContext的使用壽命是多少?就我所知,我無法真正使用GlobalContext。
3)我不想重新分配每個日誌語句的值。
希望你能明白我要去的地方。
//丹尼爾
非常感謝!偉大的提示!最後,在閱讀您的想法之前,圍繞log4net實現一個非常簡單的包裝。 這只是爲了簡化每次我必須記錄的東西時的語句。 Logger.LogEntry(ILog,Message,Exception,Level [DEBUG | ERROR | WARNING | INFO],...);這是僞類似的: Logger.LogEntry 而LogEntry總是從會話中讀取並設置ThreadContext變量。 它似乎符合我的需求:) 但現在我已經學到了更多的東西,並應嘗試實施您的想法,看看我能否從中受益更多。 // Daniel – 2012-08-17 18:37:55