Łatwe debugowanie z identyfikatorami błędów

Photo by Jill Heyer on Unsplash

Debugowanie aplikacji to jedna z najważniejszych umiejętności programisty. To frustrujące, gdy trudno jest nam odnaleźć błąd w logach aplikacji. Ogromnym ułatwieniem może być generowanie unikalnych identyfikatorów występujących błędów.

Niedawno odkryłem ciekawą technikę. Otóż za każdym razem, kiedy aplikacja webowa generuje niespodziewany błąd do jej odpowiedzi dodawany jest unikalny identyfikator.

Więc jeśli do tej pory odpowiedź na żądanie wyglądała w taki sposób:

HTTP/1.1 500

{
  "error": {
    "message": "Something went wrong"
  }
}

To po wprowadzeniu globalnego handlera niespodziewanych błędów odpowiedź wygląda następująco:

HTTP/1.1 500

{
  "error": {
    "message": "Something went wrong",
    "errorId": "e319a891-1bb6-4c6b-b28e-2f7b57df29b1"
  }
}

Wartość pola errorId to wygenerowany automatycznie kod UUID.

Jednocześnie w logach aplikacji umieszczamy dużo więcej szczegółów dotyczących otrzymanego błędu.

{ "message": "Something went wrong", 
"errorId": "e319a891-1bb6-4c6b-b28e-2f7b57df29b1", 
"details": "Circuit opened at https://api.fb.com/graph/people/8313",
"stackTrace": "...", 
"userId": 873123, 
"timestamp": "2019-02-28T06:25:36+0000"}

Teraz podczas testowania naszej aplikacji, czy nawet uruchamiania na produkcji w bardzo łatwy sposób jesteśmy w stanie powiązać odpowiedź z serwera webowego ze szczegółami błędu w logach.

Warto w taki sposób traktować wszystkie niestandardowe błędy, które pojawiają się w naszej aplikacji. Dzięki temu możemy szybciej je namierzyć.

A Ty co myślisz o tym podejściu? Jak radzisz sobie z tego typu błędami?

Dariusz Mydlarz

Cześć, nazywam się Dariusz Mydlarz i od 2012 pracuje jako programista. Tworze w ekosystemie Javy i uwielbiam systemy backendowe. Chcę w tym miejscu pomagać Ci stawać się lepszym programista. Jeśli mogę Ci jakoś pomoc, po prostu napisz do mnie.

2 Replies to “Łatwe debugowanie z identyfikatorami błędów

  1. Jeszcze lepszym pomysłem jest request/correlation ID na każdym wpisie w logu dla danego wywołania. Daje lepszy pogląd niż sam błąd, przydaje się też w innych sytuacjach. Z reguły nie musisz tego robić sam, odpowiednia biblioteka lub platforma zrobi to za ciebie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *