這人真的有我抓我的頭....爲什麼會log4net的條目去「失蹤」,在一些聽衆
我一直在使用log4net的(當前版本1.2.10),在一段時間的應用程序。在嚮應用程序添加新選項的同時,我注意到即使log4net Debug,Error等方法從該日誌源調用的項目不會被控制檯appender看到。
檢查了顯而易見的東西(比如確保沒有涉及過濾),我注意到其他奇怪的東西。如果我有多個appender(例如,日誌文件appender和UDP appender),那麼appender有時會看到不同的日誌消息子集。他們看到的哪個子集似乎是隨機的,但通常當問題發生時,他們將無法看到來自給定日誌源的所有消息。
爲什麼會發生這種情況,我該如何處理它,因爲丟失的消息意味着不能信任日誌文件以顯示遠程故障的準確畫面?
[如下的添加1月19的其他信息,2010
我終於把在ILog的對象好好看看響應獲取傳遞迴調用
LogManager.GetLogger(typeof (MyTypeHere));
在某些情況下,我我得到一個ILog對象與調試,信息,警告,錯誤等設置爲false。在其他情況下,ILog對象將它們正確設置爲true。由於我的代碼沒有任何操作這些標誌,所以在我的代碼被傳遞的時候,我的代碼中的「disabled」ILog對象消息(可以理解)根本不會被傳播。
我仍不能解釋兩個appender之間的明顯差異。
是否有涉及緩衝?我知道我的文件不會立即更新...如果有時出錯,緩衝區可能永遠不會發送給appender? – 2010-01-18 20:46:59
嗨,你到底了嗎?我在AdoNetAppender和RollingLogFile Appender之間遇到了同樣的問題 – richardwhatever 2015-07-04 19:29:56
不,我從來沒有完全解決過這個問題,但是觀察到問題的那段代碼被重寫,並且所有記錄器被禁用的ILog對象偶爾出現。我們最好的猜測是,可能存在某種奇怪的競態條件,偶爾會導致GetLogger調用在日誌初始化完成之前返回實例化的記錄器。 – 2015-07-07 20:18:51