Использование StreamWriter для реализации скользящего журнала и удаление сверху

В моем приложении C # winforms 4.0 использовался поточно-ориентированный потоковый преобразователь для внутренней отладочной информации журналирования. Когда мое приложение открывается, оно удаляет файл и создает его заново. Когда приложение закрывается, оно сохраняет файл.

Что я хотел бы сделать, это изменить мое приложение, чтобы оно добавлялось вместо замены. Это простое исправление.

Однако вот мой вопрос:

Я хотел бы сохранить мой файл журнала около 10 мегабайт максимум. Мое ограничение было бы простым. При закрытии файла, если размер файла превышает 10 мегабайт, обрежьте первые 10%.

Есть ли лучший способ сделать следующее:

Закройте файлПроверьте, если файл> 10 мегабайтЕсли это так, откройте файлРазобрать всю вещьОтбраковывать первые 10%Запишите файл обратноблизко

Редактировать: хорошо, я закончил своим собственным (показанным ниже) предложением переместить оверт на Log4Net - это хорошо, но время, которое потребуется для изучения новой библиотеки и перемещения всех моих операторов журнала (тысяч), не время, эффективное для небольшого улучшения, которое я пытался сделать.

  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);
     }
  }

Ответы на вопрос(6)

Ваш ответ на вопрос