2012-05-31 40 views
0

我有一個MVC3 Web應用程序。我正在使用Ninject 2進行依賴注入,並將Ninject日誌擴展與log4net進行日誌記錄。
我的客戶希望能夠「跟蹤」生產中的用戶會話以排除可能出現的問題。我們想要實現它的方式是通過動態更改該用戶的日誌級別,例如通過存儲cookie,因此當Ninject.logging提供記錄器實例時,它知道提供級別設置爲Debug的日誌實例。
我沒有找到任何方式來做到這一點,無論是通過使用Ninject日誌記錄或純粹的log4net。
有什麼建議嗎?根據請求信息動態更改log4net級別

回答

1

我們結束了修改ninject.extension.logging這樣:
- 在LoggerFactoryBase我們修改了GetLogger(IContext context)方法來檢索的HttpContext
一個cookie - 如果這個值被設置,我們得到或創建記錄器與「追蹤」。 +類型名稱
- 在log4net配置中,我們有一個名爲「Tracing」的記錄器設置爲調試

1

我認爲你可以像編程in this other question那樣以編程方式強制關卡。它不是完全提供一個新的logegr實例,而是改變當前的實例,但我想它可以解決您的問題。

+0

這是答案的一部分,我需要更改日誌級別。問題是,如果我這樣做,它會改變系統中的所有後續請求。我想要的只是一種改變級別的方法,只能用於會話中帶有Cookie或參數或其他內容的請求。 –

+0

使用LogManager.GetLogger()創建一個新日誌,並將其添加到原始日誌的相同appender中。 –