Aplikacja My C# winforms 4.0 używa bezpiecznego strumienia wątku do wewnętrznego, debugującego rejestrowania informacji. Kiedy moja aplikacja się otworzy, usuwa plik i odtwarza go. Po zamknięciu aplikacji zapisuje plik.Używanie StreamWriter do implementacji dziennika toczenia i usuwanie z górnej wersji
Chciałbym zmodyfikować moją aplikację tak, aby dołączała zamiast zastępować. To jest prosta naprawa.
Jednak tutaj jest moje pytanie:
Chciałbym, aby moje plik dziennika maksymalnej około 10 megabajtów. Moje ograniczenie byłoby proste. Po przejściu do zamknięcia pliku, jeśli plik jest większy niż 10 megabajtów, zmniejsz pierwsze 10%.
Czy jest 'lepszy' sposób, a następnie wykonując następujące czynności:
- zamknąć plik
- sprawdzić, czy plik jest> 10 meg
- Jeśli tak, otwórz plik
- analizowania cała sprawa
- Cull pierwszy 10%
- zapisać plik z powrotem
- Zamknij
Edycja: cóż, skończyłem przewracać własne (pokazane poniżej) sugestia, aby przenieść się do Log4Net jest dobre, ale czas, który zajmie, aby nauczyć się nowej biblioteki i przenieść wszystkie moje wyciągi z dziennika (Tysiące) nie jest efektywne czasowo dla niewielkiego ulepszenia, które próbowałem wykonać.
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);
}
}
A co z wykorzystaniem konkretnej biblioteki zapisanej do logowania, która już implementuje tę funkcjonalność? (Log4Net przychodzi na myśl) – Steve
Nie poświęciłem czasu na zajrzenie do Log4Net. Do tej pory moja prosta klasa streamerów świetnie się spisała. Jeśli Log4Net zezwoli na "toczący się" log, którego szukam, zdecydowanie jest to rozwiązanie, którego powinienem użyć. – greggorob64
Przyszli czytelnicy: '" ... [do] przeniesienia wszystkich moich logowań (tysięcy) do góry nie jest czasochłonne "" - i dlatego polegamy na wtrysku zależności i interfejsach. :) Lepszy projekt, np. Wstrzyknięcie instancji 'ILogger' (na przykład) do wszystkich klas, które wymagają logowania - lub nawet posiadanie pojedynczej głównej klasy/funkcji rejestrowania - pozwoli ci modyfikować wszystkie funkcje rejestrowania w jednym miejscu podczas zmiany wymagań rejestrowania . – brichins