2016-08-29 82 views
0

我正在開發一個C#中的Windows服務,它可能會每秒寫入幾次到日誌。我目前正在爲每個操作使用System.IO.File.AppendAllText(time + message),我擔心很多寫入操作可能會很快耗盡磁盤。做頻繁的磁盤日誌寫入的最佳做法

這可能是一個問題嗎?我應該每隔幾秒鐘使用一次數據流並刷新一次? Windows磁盤緩衝區是否防止這種情況發生?

+0

更多需要考慮的事項:併發性?異常終止?呼叫者延遲?最大日誌大小?老實說...如果這不僅僅是一個練習,你最好選擇一個日誌框架,如NLog –

+0

在網絡上有一般關於這個的信息,特別是這個網站。在人們去重複已有的內容之前,請閱讀[問]並分享您的研究成果。 – CodeCaster

+0

感謝阿德里亞諾,我已經手動解決了這些問題,甚至沒有考慮過其他問題。我表面上看過log4net,並放棄使用它作爲矯枉過正的想法,但似乎我需要它。 代碼測試員,我專注於對磁盤損傷的搜索,因爲這是我的擔憂,發現一個被拋棄的問題與編程無關,而且幾乎沒有其他問題。感謝您提出「如何確保所有數據......」的問題。 –

回答

2

爲什麼你想重新發明輪子? 更好地使用一些準備framework例如。 Log4NetNLogSeriLog

「我應該每隔幾秒鐘使用一個數據流並刷新一次嗎?」

如果你的應用崩潰而沒有刷新流呢?日誌消失,你不知道發生了什麼。