Verwenden von StreamWriter zum Implementieren eines fortlaufenden Protokolls und Löschen von oben

In meiner C # winforms 4.0-Anwendung wurde ein threadsicherer Streamwriter verwendet, um interne Debugprotokollierungsinformationen zu erstellen. Wenn meine App geöffnet wird, wird die Datei gelöscht und neu erstellt. Wenn die App geschlossen wird, wird die Datei gespeichert.

Ich möchte meine Anwendung so ändern, dass sie angehängt wird, anstatt ersetzt zu werden. Dies ist eine einfache Lösung.

Hier ist jedoch meine Frage:

Ich möchte meine Protokolldatei auf maximal 10 MB beschränken. Meine Einschränkung wäre einfach. Wenn Sie zum Schließen der Datei gehen und die Datei größer als 10 Megabyte ist, kürzen Sie die ersten 10%.

Gibt es einen 'besseren' Weg als den folgenden:

Schließen Sie die DateiÜberprüfen Sie, ob die Datei größer als 10 MB istWenn ja, öffnen Sie die DateiAnalysiere die ganze SacheErledige die ersten 10%Schreiben Sie die Datei zurückSchließen

Edit: Nun, am Ende habe ich meinen eigenen (siehe unten) Vorschlag gerollt, nach Log4Net zu wechseln, ist gut, aber die Zeit, die benötigt wird, um die neue Bibliothek zu lernen und alle meine Log-Anweisungen (Tausende) zu verschieben, ist es nicht Zeiteffektiv für die kleine Verbesserung, die ich machen wollte.

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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage