2013-05-14 57 views
3

我需要將信息記錄到每分鐘1000-2000次左右的文件。我還需要保存該信息以防應用程序崩潰。保持文件打開,不要在應用程序崩潰時丟失數據

目前這裏是我在做什麼:

using(StreamWriter sw=new StreamWriter(filename,true)) 
{ 
    sw.WriteLine(info); 
} 

這工作,但它是極其緩慢。

我想在做這樣的事情:

​​

,但是當我寫這樣的代碼,我怕我存儲的信息將丟失的應用程序崩潰時。

我該如何保存文件中的信息,而無需一直打開和關閉它?

+2

使用[log4net的](http://www.codeproject.com/Articles/140911/log4net-Tutorial) – 2013-05-14 15:02:17

回答

5

您可以在每次寫入後調用StreamWriter.Flush()

public static void Main(...) 
{ 
    ..... 
    sw.WriteLine(....); 
    sw.Flush(); 
} 

但是,你應該使用NLogLog4Net

+0

這些日誌框架中的任何一個都能夠有效地「事先」記錄事物,並且如果操作成功完成,那麼這些條目就會「蒸發」,但如果操作失敗仍然會寫入內容。 – supercat 2014-11-05 17:00:39

+0

@supercat據我所知。 – 2014-11-05 18:19:32

+0

好奇。我一直在考慮編寫我自己的日誌框架,將它作爲主要功能之一,但卻被「不要自己編寫日誌框架」的口號所嚇倒。在許多情況下,如果例如一個遠程服務器的操作成功,通過記錄發送和接收的所有內容的詳細信息,任何事情都不會獲得,但是如果操作失敗,即使通常沒有價值的信息也可能變得非常有價值。能夠具有日誌冗長取決於操作是成功還是失敗似乎非常有用。 – supercat 2014-11-05 18:26:47

1

我用這class它實現了一個隊列,每X消息或Y時間刷新。

你可以改善它的移動用塊中的,而在flushLog(外側)和設置固定文件名

相關問題