Wasz logger

0

Cześć,
Ostatnio zacząłem zastanawiać się nad "dobrym" loggerem, i stwierdziłem że zapytam się Was jak to robicie. W jaki sposób przetrzymujecie logi (plik tekstowy czy może coś innego). Czy klasę loggera macie globalną, tak aby każda klasa miała do niego dostęp czy może przekazujecie już gotowy obiekt, czy może w każdej klasie która go używa tworzycie nową instancję i czemu robicie właśnie tak. W jaki log'ujecie? Czas:komunikat czy może inaczej?
Liczę na ciekawą dyskusję :)
Pozdrawiam
NickOver

4

Zerknij do gotowych rozwiązań - np. nlog czy log4j/log4net. Liczy się wydajność, transparentność (tj. żeby błąd w konfiguracji czy przy generowaniu loga nie psuł istniejącego procesu) i wygoda korzystania. Moim zdaniem nie bardzo jest sens pisać kolejną bibliotekę, kiedy masz co najmniej dwa frameworki bardzo dobre pod kątem wszystkich trzech wymagań.
Co do konfiguracji - format zapisu powinien być konfigurowalny i umożliwiać zapis nie tylko takich pierdół jak godzina i komunikat, ale też - z automatu - nazwę metody i klasy, z której następuje logowanie informacji, stack trace, poziom błędu, id wątku, url wywołania strony itp. Format nazwy pliku do logowania też powinien być konfigurowalny, włączając w to używanie dat w nazwach. Powinna być możliwość zapisywania błędów nie tylko do pliku, ale też do bazy danych czy wysłania na mail i to z zależności od poziomu błędu (na maila np. tylko fatale, to pliku cała reszta z wyjątkiem debug/info). Rozmiar pliku powinien być kontrolowany (za pomocą konfiguracji) - po przekroczeniu np. 10MB logowanie do następnego pliku.
Przy tym wszystkim możliwość użycia statycznej metody do logowania to tylko cukier składniowy. Oba wspomniane frameworki dostarczają fabryk loggerów, jak użyjesz takiego loggera zależy już tylko od Ciebie.

0

Logger per klasa, w samym kodzie nie ma wielkiej magii zwykle zapis wiadomości lub zapis wiadomość i wyjątku, cała reszta jest w pliku konfiguracyjnym z jakich przestrzeni nazw co i gdzie ma się zapisywać i w jakim formacie. Zapisuje zwykle do pliku rzadziej do bazy. Pliki są zwykle per dzień, starsze niż X dni są automatycznie zipowane żeby oszczędzać miejsce. Wpisy w logu są przeróżne zależy od typu aplikacji i co nam potrzeba wystarczy popatrzeć na spis dla nlog https://github.com/nlog/nlog/wiki/Layout-Renderers możliwości jest mnóstwo, oczywiście takie wpisy jak log level, czas itp. się powtarzają ale cała reszta "zależy", inne rzeczy są potrzebne jak logujesz błędy aplikacji a co innego jak logujesz soapowe requesty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1