我們使用log4net來記錄winform應用程序的事件和錯誤。 我們的客戶希望在應用程序運行期間檢查日誌文件。 但我找不到log4net何時以及如何執行寫(提交)操作。 以及如何滿足客戶的要求,除了自己創建另一個記錄器。 有什麼幫助嗎?謝謝。log4net何時將日誌寫入或提交到文件?
回答
如果您使用的FileAppender
,該附加器繼承了TextWriterAppender
,這又暴露了ImmediateFlush
財產。默認情況下,此屬性的值爲true
,並強制appender爲每個追加操作在基礎流上執行Flush()
。
根據您設想客戶「監視」日誌文件的方式,一個想法可能是啓用應用程序內的監視。除了附加到文件之外,還可以使用the MemoryAppender並從該appender讀取事件。
你說的是日誌文件,所以大概你在用FileAppender或派生類。這會默認緩衝輸出。緩衝輸出效率更高,所以爲了滿足您的要求,我建議您在查看日誌之前提供一些刷新日誌的機制,而不是在每次寫入操作後強制進行提交。
您可以像下面的代碼做到這一點:
foreach (IAppender appender in LogManager.GetRepository().GetAppenders())
{
BufferingAppenderSkeleton b = appender as BufferingAppenderSkeleton;
if (b != null) b.Flush();
}
「這會默認緩衝輸出。」 這是不正確的! FileAppender(更具體地說它的基類TextWriterAppender)在每個Append操作後都會刷新!請參閱http://logging.apache.org/log4net/release/sdk/log4net.Appender.TextWriterAppender.ImmediateFlush.html 因此,您不需要執行任何操作,因爲最新的日誌條目將始終立即寫入文件,以便您的客戶可以簡單地打開文件。 – gehho 2010-03-16 07:38:06
@gehho是對的。 FileAppender不緩衝。緩衝的內置appender是AdoNet-,BufferingForwarding-,Remoting-和SmtpXXX appender。 – 2010-03-16 08:37:05
我在SharePoint實例中使用log4net時注意到的一件事是,根據您的安全配置和配置加載的實現,加速應用程序池的用戶可能沒有寫權限本地文件系統來創建日誌文件。
因此,您需要確保使用正確的憑據調用您的配置,在SharePoint中它將處於提升的安全上下文中。不完全相關,但它可能是你遇到的一個問題。
請參閱this SO發佈瞭如何以編程方式刷新log4net日誌。 Joe的回答雖然稍微不準確,但代碼大致相同,所以大概可以用於沖洗所有緩衝的appender。
- 1. 無法寫入日誌文件log4net
- 2. Log4Net無法寫入日誌
- 3. 將日誌寫入文件
- 4. 寫入提交日誌文件的問題cassandra
- 5. 將事件日誌寫入文件,powershell
- 6. log4net日誌文件沒有被寫入使用Quartz.net + Common.Logging
- 7. log4net的信息不寫入日誌文件
- 8. 配置log4net根據日誌級別寫入不同的文件
- 9. log4net - 如何將服務器的IP地址寫入日誌
- 10. Python - 將日誌寫入文件
- 11. log4j不將日誌寫入文件
- 12. C#寫入日誌文件
- 13. 寫入日誌文件
- 14. powershell寫入日誌文件
- 15. 如何將日誌消息同時寫入日誌文件和控制檯?
- 16. 如何解析log4net日誌文件?
- 17. log4net的 - 任何日誌文件產生
- 18. 如何清除log4net日誌文件?
- 19. 如何加密log4net日誌文件
- 20. 無法使用log4net在ASP.NET Web Forms站點中將日誌寫入文件
- 21. log4net,可以將2個應用程序寫入同一個日誌文件嗎?
- 22. 我在哪裏可以將我的log4net日誌文件寫入ClickOnce下?
- 23. log4net c#,已安裝的程序無法將日誌寫入文件
- 24. 如何將.CMD文件的日誌寫入文本文件?
- 25. perl將日誌db查詢錯誤寫入日誌文件
- 26. Log4net - 每日重置日誌文件
- 27. Ionic-Angularjs |將日誌記錄寫入文件或變量
- 28. Prestashop - 如何寫入日誌文件?
- 29. 如何寫入Tomcat的日誌文件
- 30. C# - 使用字符串生成器將日誌文件寫入日誌文件
我們在我們的Windows Forms應用程序中使用log4net,我們對此沒有任何問題。事件和文件更新之間有一些延遲,但我們談論的是秒數。也許問題出在別的地方? – 2010-03-16 08:01:18
是的,也許我們的客戶的問題是第二種情況。正如Peter所說,我們將通過MemoryAppender解決這個問題。 謝謝大家,尤其是彼得。你的答案更有幫助。 – Jollian 2010-03-17 07:14:08