我保留了幾個文本日誌文件,以防止它們變得太大。我搜索並發現了很多人問同樣的事情,我發現了幾個解決方案,看起來效率是有問題的,所以我試着滾動我自己的功能。我以前在VB6中做過同樣的事情,並最終在我的所有應用程序中使用該函數,所以我知道我現在會經常在我的C#程序中使用它。這應該可能是CW,但因爲CW標記爲禁用問題,所以我在這裏發佈。我的問題是,因爲我將會使用它很多是有效的,如果不是,我應該改變什麼來改進它?目前我將日誌文件限制爲1MB,這是我保留的最大日誌,所以我不認爲它們會有更大的變化。保留特定大小的日誌文件
private static void ShrinkFile(string file)
{
StreamReader sr = new StreamReader(file);
for (int i = 0; i < 9; i++) // throw away the first 10 lines
{
sr.ReadLine();
}
string remainingContents = sr.ReadToEnd();
sr.Close();
File.WriteAllText(file, remainingContents);
}
爲什麼不使用log4net登錄?您的案例在這個組件中處理得很好 – Seb
ShrinkFile如何調用?你使用FileWatcher類來觸發它嗎? – JimSTAT
在我看來,sr.ReadToEnd()在將整個文件讀入內存時會很危險。不確定你正在縮小的文件的大小,但如果你打大文件,這可能會導致OOM問題等。我建議將文件的其餘部分進行流式處理並逐行寫入。這一切都假設你的文件可能會更大,如果你打算TPL或不TPL(同時發生多個收縮)。 –