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