Używanie StreamWriter do implementacji logu kroczącego i usuwania z góry

Moja aplikacja C # winforms 4.0 używa bezpiecznego dla wątków programu streamwriter do tworzenia wewnętrznych, debugujących informacji logowania. Po otwarciu aplikacji usuwa plik i odtwarza go. Po zamknięciu aplikacja zapisuje plik.

To, co chciałbym zrobić, to zmodyfikować aplikację, tak aby dodawała ją zamiast zastępować. To jest prosta poprawka.

Oto moje pytanie:

Chciałbym zachować mój plik dziennika około 10 megabajtów. Moje ograniczenie byłoby proste. Gdy zamkniesz plik, jeśli plik jest większy niż 10 megabajtów, usuń pierwsze 10%.

Czy jest wtedy „lepszy” sposób:

Zamknij plikSprawdź, czy plik jest> 10 megJeśli tak, otwórz plikAnalizuj całą rzeczCull pierwsze 10%Zapisz plik z powrotemBlisko

Edycja: cóż, skończyło mi się na tym, że przetoczyłem swoją własną (pokazaną poniżej) sugestia przeniesienia jawności do Log4Net jest dobra, ale czas potrzebny na nauczenie się nowej biblioteki i przeniesienie wszystkich moich wyciągów z dziennika (tysięcy) nie jest czas efektywny dla małego ulepszenia, które próbowałem zrobić.

  private static void PerformFileTrim(string filename)
  {
     var FileSize = Convert.ToDecimal((new System.IO.FileInfo(filename)).Length);

     if (FileSize > 5000000)
     {
        var file = File.ReadAllLines(filename).ToList();
        var AmountToCull = (int)(file.Count * 0.33); 
        var trimmed = file.Skip(AmountToCull).ToList();
        File.WriteAllLines(filename, trimmed);
     }
  }

questionAnswers(6)

yourAnswerToTheQuestion