Uso de StreamWriter para implementar un registro rodante y eliminación de la parte superior

Mi aplicación C # winforms 4.0 ha estado usando un streamwriter seguro para subprocesos para hacer información interna de registro de depuración. Cuando mi aplicación se abre, borra el archivo y lo vuelve a crear. Cuando la aplicación se cierra, guarda el archivo.

Lo que me gustaría hacer es modificar mi aplicación para que se agregue en lugar de reemplazar. Esta es una solución simple.

Sin embargo, aquí está mi pregunta:

Me gustaría mantener mi archivo de registro alrededor de 10 megabytes como máximo. Mi restricción sería simple. Cuando vaya a cerrar el archivo, si el archivo tiene más de 10 megabytes, recorte el primer 10%.

¿Hay una forma 'mejor' que hacer lo siguiente?

Cierra el archivoCompruebe si el archivo es> 10 megasSi es así, abre el archivoAnalizar toda la cosaSacar el primer 10%Escribe el archivo de vueltaCerrar

Edit: bueno, terminé haciendo rodar la mía (como se muestra a continuación). La sugerencia de hacer un movimiento hacia Log4Net es buena, pero no es el momento de aprender la nueva biblioteca y mover todas mis declaraciones de registro (miles). Tiempo efectivo para la pequeña mejora que estaba tratando de hacer.

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta