Wprowadzenie
Jeśli błąd wystąpi w witrynie internetowej lub systemie, warto go oczywiście zarejestrować i wyświetlić użytkownikowi uprzejmy komunikat z kodem referencyjnym błędu.
A jeśli masz wiele systemów, nie chcesz, aby te informacje były rozsypane - dobrze jest mieć jedno scentralizowane miejsce dla nich.
Na najprostszym poziomie wszystko, czego potrzeba, to rosnący identyfikator i zserializowany zrzut szczegółów błędu. (I być może „scentralizowane miejsce” to skrzynka odbiorcza e-mail.)
Na drugim końcu spektrum znajduje się być może w pełni znormalizowana baza danych, która umożliwia także naciśnięcie przycisku i wyświetlenie wykresu błędów na dzień lub określenie, jaki jest najczęstszy rodzaj błędu w systemie X, czy serwer A ma więcej baz danych błędy połączenia niż serwer B i tak dalej.
Odnoszę się tutaj do rejestrowania błędów / wyjątków na poziomie kodu przez zdalny system - a nie śledzenia problemów „na podstawie człowieka”, takich jak Jira, Trac itp.
pytania
Szukam uwag od programistów, którzy korzystali z tego typu systemu, w szczególności na temat:
- Jakie są podstawowe funkcje, bez których nie można się obejść?
- Jakie zalety mają funkcje, które naprawdę oszczędzają Twój czas?
- Jakie funkcje mogą wydawać się dobrym pomysłem, ale w rzeczywistości nie są tak przydatne?
Na przykład powiedziałbym, że funkcja „pokaż duplikaty”, która identyfikuje wielokrotne wystąpienie błędu (nie martwiąc się o „nieistotne” szczegóły, które mogą się różnić) jest bardzo istotna.
Przycisk „stwórz problem w [Jira / etc] dla tego błędu” brzmi jak dobra oszczędność czasu.
Chciałbym tylko powtórzyć, to, czego szukam, to praktyczne doświadczenia ludzi, którzy korzystali z takich systemów, najlepiej poparte tym, dlaczego funkcja jest niesamowita / okropna.
(Jeśli mimo to zamierzasz teoretykować, przynajmniej zaznacz swoją odpowiedź jako taką).
źródło
Odpowiedzi:
Byłem w projekcie, w którym zarejestrowałem błędy klienta przy użyciu biblioteki Microsoft Enterprise . Wszystkie wyjątki są wysyłane na naszą skrzynkę pocztową. W temacie wiadomości dodaliśmy kod skrótu z serializowanym błędem, aby uniknąć powielania wiadomości. Oczywiście można przechowywać serializowane wiadomości w bazie danych i tak dalej.
Polecam sprawdzić bibliotekę Microsoft Enterprise i Log4Net .
Niektóre funkcje Log4Net
źródło
W przypadku aplikacji bazodanowych
<TABLE>:<PrimaryKeyID>
istnieje pewien rodzaj identyfikatora (podobny ), który umożliwia śledzenie rekordów w bazie danych związanych z zakresem, w którym wychwycono wyjątek.Zrobiłem to z Oracle i PL / SQL, rejestrując identyfikator w tabeli bazy danych w aplikacji, z modułu obsługi wyjątków.
źródło
Jak zauważył Amir Rezaei, wiele z tego, co opisujesz (tj. Części do logowania) jest zaimplementowanych w bibliotece przedsiębiorstwa. Wszystko inne wydaje się być bardziej częścią analityczną (tj. Co zrobić z logami później).
W moim przypadku stworzyłem małe aplikacje i skrypty SQL, które ułatwiły niektóre rzeczy. Oto niektóre rzeczy, które naprawdę mi się podobały:
źródło
Czasami informacje dziennika są zbyt obszerne, aby można je było zapisać na dysku. Jednym z podejść, jakie widziałem, jest zapisywanie wpisów do dziennika w węży ogniowej (np. Perl) mniej więcej tak:
wtedy analityk może określić, na co chce spojrzeć.
źródło
Oto kilka rzeczy, których nauczyłem się z monitorowania błędów w naszych aplikacjach:
Mam świetne wyniki dla log4net, ponieważ sprawia, że naprawdę łatwo logować się do wielu miejsc i łatwo wprowadzać zmiany w konfiguracji rejestrowania.
źródło
elmah to system rejestrowania błędów open source dla aplikacji ASP.NET i można go szybko i łatwo dodać do istniejącego systemu (za pomocą NuGet http://nuget.codeplex.com/ ). Obsługuje różne funkcje backendów i powiadomień.
Nie znam nikogo, kto dodałby ją do aplikacji komputerowej, ponieważ działa ona jako witryna internetowa, ale nic nie stoi na przeszkodzie, abyś uruchomił ją jako usługę i opublikował wyjątki w Internecie.
http://code.google.com/p/elmah/
źródło