Poradnik Webmastera

Kanał ATOM

Zapisz się na darmowy newsletter:
E-mail:

Imię:

Zgadzam się z Polityką Prywatności

Po zapisaniu się otrzymasz ten ebook:
Jak zwiększyć ruch na stronie WWW? 120 praktycznych wskazówek
Pozycjonowanie dzięki:
Darmowe Pozycjonowanie
Valid XHTML 1.0 Strict
Poprawny CSS!

Obsługa błędów w aplikacjach internetowych - część 2

W pierwszej części tego artykułu dokonałem wprowadzenia do zagadnienia obsługi błędów w aplikacjach internetowych i przedstawiłem zarysy mechanizmu automatycznego ich raportowania. W tej części będę kontynuował ten temat.

Przedstawiony wcześniej mechanizm automatycznego raportowania błędów zazwyczaj sprawdza się dobrze. Piszę "zazwyczaj" ponieważ miałem jedną sytuację gdy pomimo posiadania raportu o błędzie nie byłem w stanie go zreprodukować - moja aplikacja internetowa w pewnym momencie zaczynała wykonywać pewien fragment kodu co skutkowało błędem. Teoretycznie jednak nie powinna była go w ogóle uruchomić, i nie miałem pomysłu dlaczego tak się dzieje.

Przeszkodą okazał się tutaj fakt że raporty o błędach były "statyczne" - zawierały one dokładną informację o stanie aplikacji w momencie wystąpienia błędu, ale nie było tam informacji o tym co się działo wcześniej. Postanowiłem zatem dodać mechanizm który by logował także takie informacje.

Rozwiązanie które zastosowałem polegało na dodaniu do obiektu sesji dodatkowego obiektu który przechowywałby informacje o ostatnich zdarzeniach (ja zdecydowałem się na pamiętanie 40 ostatnich zdarzeń, po przekroczeniu tej liczby najstarsze wpisy były sukcesywnie usuwane). Ponieważ wszystkie dane sesji były dołączane do raportu o błędzie, więc lista ostatnich zdarzeń też tam się pojawiała.

Zdarzenia które logowałem to były przede wszystkim informacje o wywołaniach stron. Jeżeli strona prezentowała różne dane, dodawałem także identyfikator który jednoznacznie te dane identyfikował. W przypadku stron które mogły prezentować dane na kilka sposobów (np. lista produktów i informacje szczegółowe o wybranym produkcie), dodawałem także informacje jak dane są wyświetlane. Dodatkowo kod odpowiedzialny za przełączanie widoku lista/szczegóły logował też fakt że użytkownik zażyczył sobie zmiany widoku.

Dzięki zastosowaniu tego rozwiązania błąd odnalazłem już stosunkowo szybko - użytkownik po wypełnieniu mojego formularza korzystał z przycisku "Wstecz" w przeglądarce i wracał do jednej z pierwszych stron. Ponieważ jednak aplikacja nie przewidywała takiej sytuacji, skutkowało to błędem i mailem z raportem o nim. Poprawienie jego już było proste.

Jak być może zwróciłeś(aś) uwagę, ograniczyłem liczbę logowanych zdarzeń do 40. Zrobiłem tak aby nadmiernie nie zwiększać zużycia pamięci, a jednocześnie aby mieć wystarczająco dużo informacji do analizy. W przypadku mojego błędu wystarczyło mi kilkanaście wpisów z logu, aby odkryć jego przyczynę, więc w praktyce limit 20 wpisów byłby dla mnie wystarczający.

Jak zatem widać, nie zawsze statyczny zrzut stanu aplikacji wystarcza do znalezienia odpowiedzi na pytanie dlaczego błąd wystąpił. Czasami potrzeba też przeanalizować kilka lub kilkanaście ostatnich wykonanych przez użytkownika kroków, aby móc odkryć przyczynę błędu. Dzięki rozwiązaniu które tutaj opisałem jest to możliwe.



Wykop tą stronę! >>> dodajdo.com
Ile masz lat?
8 lub mniej
9 - 12
13 - 16
17 - 20
21 - 26
27 - 35
36 - 50
51 lub wiecej
Pokaż wyniki

"Magazyn INTERNET" to miesięcznik poświęcony w całości globalnej sieci komputerowej. Prezentuje aktualności internetowe, praktyczne porady związane z sieciami komputerowymi, kursy dla webmasterów,...
Magazyn Internet - zobacz teraz!

Helion.pl
Tylko dzisiaj!
Zaoszczędzisz 30%!

Joomla! System zarządzania treścią
Cena: 30.8 zł 44 zł

Adobe Dreamweaver CS3/CS3 PL. Oficjalny podręcznik
Cena: 59 zł

PHP5. Wprowadzenie
Cena: 44.9 zł

Funkcjonalność stron www. 50 witryn bez sekretów
Cena: 79 zł
wędkowanie | dobre programy | szkolenia programowanie | Pozycjonowanie | facet | suknie ślubne Warszawa | sitodruk | Kredyty | Veto! | praca za granicą

Page copy protected against web site content infringement by Copyscape
Copyright © 2003-2008 Daniel "Sir Zooro" Frużyński
Powielanie i dalsze rozpowszechnianie bez zezwolenia zabronione