Istnieją dwa powody rejestrowania:
- Diagnostyczny
- Rewizja
Rejestrowanie diagnostyczne zostało już omówione przez innych i nie będę więcej omawiać tej kwestii. Powiem tylko, że powinieneś mocno przemyśleć, co się stanie, jeśli wystąpi awaria dziennika? Czy zależy ci na tym, aby rzucić wyjątek w aplikacji lub zarządzać nim w inny sposób? Jest to „to zależy”, ale wiadomości poziomu rejestrowania informacji prawdopodobnie powinny zostać pominięte.
Rejestrowanie audytu jest wymaganiem biznesowym. Rejestrowanie audytu rejestruje ważne zdarzenia w systemie i jest tym, czym interesuje się zarządzanie i orły prawne. Chodzi o to, kto podpisał się na czymś, kto dokonał edycji itp. Prawdopodobnie jako administrator systemu lub programista rozwiązujący problem z systemem, prawdopodobnie jesteś tylko nieznacznie nimi zainteresowani. Jednak w wielu przypadkach tego rodzaju rejestrowanie jest absolutnie częścią transakcji i powinno zakończyć się niepowodzeniem całej transakcji, jeśli nie można jej zakończyć.
Myślenie o tych dwóch osobno jest dla mnie pomocne nie tylko dlatego, że jedno jest „opcjonalne”, a drugie obowiązkowe, ale ponieważ w zależności od wymagań może być konieczne ich osobne wdrożenie. Może się zdarzyć (czasami), że oba są owocami, ale jedno to jabłka, a drugie pomarańcze. Zwykle jednak pojedyncza struktura rejestrowania obsługuje oba te elementy.
W większości zadań serwera rejestrowanie jest kluczowe, ponieważ administrator zwykle nie jest obecny, gdy coś się dzieje, więc musi sprawdzić po fakcie.
Ale facet z Google powiedział mi kiedyś, że procesy serwera nie rejestrują; zamiast tego są „oprzyrządowane”; oznacza to, że każdy proces ma zaczepy lub porty (nie określił mechaniki), w których inne procesy mogą się zatrzasnąć, aby zapytać o parametry i statystyki. Są to te procesy monitorowania, które przechowują wiele rzeczy w dziennikach, zaletą jest to, że informacje, które otrzymują, nie „otwierają pliku”, „zapisują”, „pobierają”; dostają takie rzeczy jak „45 453 otwarte pliki”, „653 klientów usługi X”, „344 ms średnia odpowiedź na zapytanie Y”
Z pewnością jest to inne podejście, o którym staram się pamiętać, opiekując się moimi systemami, nawet jeśli są one o kilka rzędów wielkości mniejsze.
źródło
Pochodzę z aplikacji N-Tiered firmy Winforms, która rejestrowała wszystko.
To nie było bardzo przydatne.
Jasne, rejestrowanie wyjątków jest świetne; ale po co logować je na maszynie klienta, skoro można wysłać e-mailem wyjątek do zespołu programistów?
Zapisywanie informacji łatwo zmienia się w uzależnienie, którego wartość rzadko jest uzasadniona. W każdej sytuacji, w której możesz logować się bezpłatnie, lepiej jest zbierać ukierunkowane informacje i wysyłać je tam, gdzie potrzebujesz.
źródło
Przechwytywanie informacji o wyjątkach jest koniecznością, ponieważ może być do pewnego stopnia bardzo pomocne. Czasami jednak informacje o wyjątkach nie są wystarczające, zwłaszcza jeśli użytkownik / klient aplikacji nie może zgłosić błędu z poprawnymi informacjami.
Czy rejestrowanie ogranicza się tylko do rejestrowania informacji o błędach?
W moim przypadku (aplikacja internetowa) zawsze loguję, która strona jest odwiedzana, kiedy, co klikają, gdzie ip i przeglądarka itp. Loguję nawet całkowity czas ładowania dla każdej wizyty na stronie, dzięki czemu mogę wiedzieć, które strony są wolne i potrzebuje optymalizacji. więc mogę powiedzieć, że loguję jak najwięcej.
na początku nie miałem pojęcia, jakie będzie to miało znaczenie. ale najwyraźniej jest bardzo pomocny w wielu sprawach (innych niż debugowanie):
Myślę, że rejestrowanie może zyskać na znaczeniu, jeśli uwielbiamy w nim wykopywać dane statystyczne.
źródło
Jestem programistą w firmie, której produkty są wdrażane za granicą. Gdy przychodzi zespół wsparcia z pytaniem o definicję problemu, moimi jedynymi narzędziami do diagnozy są moje pliki dziennika i kopia bazy danych klienta. Korzystając z bazy danych i mojego środowiska programistycznego, mam możliwość odtworzenia błędnego przypadku, ponieważ loguję przychodzące dane do mojego modułu i powiązanych działań. Jeśli mogę odtworzyć błąd za pomocą zebranych danych, mogę to naprawić za pomocą debugowania. Gdybym nie miał plików dziennika, musiałbym polegać na opisie klienta lub zespołu pomocy technicznej na temat tego, co dzieje się w danym przypadku (co ma dużą szansę na wprowadzenie w błąd).
Po drugie, rejestrowanie daje mi możliwość wykrycia wąskich gardeł mojego modułu we wdrożonej witrynie, ponieważ rejestruję datę i godzinę niektórych działań, a następnie mogę sprawdzić, które działanie zużywa ile czasu.
Ponadto załóżmy, że nasze rozwiązanie składa się z 6 modułów i widzę dzienniki błędów w moich plikach dziennika dotyczące przekroczeń limitu czasu bazy danych. Jeśli te błędy zostaną zarejestrowane również w 5 innych modułach, prawdopodobieństwo, że jest to problem związany z serwerem SQL, wzrasta. Jeśli jest to rejestrowane tylko w moim module, prawdopodobieństwo, że moje zapytania są błędne, rośnie. Myślę, że tego rodzaju rzeczy są przydatnymi wskaźnikami.
To, jakie dane widzę w moich plikach dziennika, zależy od konfiguracji poziomu dziennika. Jeśli jest to nowy produkt, ustawiamy poziom dziennika na „Wszystkie”, aby zebrać jak najwięcej danych. Ale kiedy ulepszamy produkt, możemy chcieć utrzymać poziom dziennika na poziomie „Błąd”, aby rejestrować tylko błąd, ale nie dzienniki poziomu informacji itp.
źródło
Rejestrowanie jest przydatne w przypadku informacji, których nie można uzyskać za pomocą innych programów:
Uwaga: Chcesz mieć co najmniej DWIE pliki dziennika.
INFO jest zawsze włączony. DEBUG jest włączony w razie potrzeby.
Napisz kod logowania, przewidując, że pewnego dnia będziesz musiał debugować sytuację, w której WSZYSTKO, co masz, to plik dziennika, a prawidłowe wykonanie tej czynności może być różnicą między zwolnieniem z pracy a awansem.
Dla dodatkowej mili, wszystkie wywołania funkcji dodają swoje parametry do dowolnego śladu stosu, w Javie za pomocą
Podejście to zasadniczo ulepsza stos wywołań o wartości parametrów i może umożliwić analizę sytuacji tylko za pomocą śledzenia stosu i bez konieczności przeglądania plików dziennika.
źródło
Poleciłbym również, aby wszystkie nietrywialne aplikacje korzystały z rejestrowania wielopoziomowego.
Z powodów, które podali inni, jest to nieocenione narzędzie do rozwiązywania problemów z aplikacją.
W niektórych przypadkach rejestrowanie jest niezbędne, na przykład w aplikacjach finansowych i innych domenach, które wymagają dzienników aktywności, dla bezpieczeństwa, wskaźników użytkowania i audytu.
źródło
Z pewnością zależy to od rodzaju budowanego systemu.
Jeśli piszesz samodzielną aplikację komputerową, taką jak edytor tekstu, prawdopodobnie nie potrzebujesz żadnego logowania.
Jeśli piszesz system osadzony, nie możesz żyć bez logowania. W przeciwnym razie, gdy urządzenie osadzone zawiesi się, nie masz pojęcia, dlaczego. Konieczne jest także rejestrowanie za każdym razem, gdy system obejmuje wiele procesów lub wiele fizycznych maszyn komunikujących się ze sobą. Ponownie, gdy system się zawiesi, musisz wiedzieć, która jego część umarła, kiedy i dlaczego. Musisz być w stanie porównać dzienniki, aby ustalić, czy dane trafiły z jednego procesu do drugiego. Z tego samego powodu musisz rejestrować się za każdym razem, gdy twój system ma działać przez dłuższy czas bez dużej bezpośredniej interakcji użytkownika.
źródło
Logowanie jest zawsze przydatne. Ale przy wdrażaniu należy pamiętać, że niekoniecznie ty, który czyta dzienniki. Być może jest to jakiś administrator, użytkownik końcowy, klient, zespół wsparcia ...
Dlatego nie tylko zapisuj ślady stosu, ale także dodatkowe informacje, które mogą być interpretowane przez osoby niebędące programistami. Gdy Twoja aplikacja jest obsługiwana przez inne grupy, pomocne jest również zapisanie unikalnych kodów błędów w dziennikach. Może to ułatwić wsparcie, automatyzację ...
Kolejny punkt z perspektywy administratora: Pomyśl o rotacji logów.
źródło