Sentry - Jak a proč logovat chyby

PHP, JavaScript, Kvalita kódu

Nikdo není dokonalý, žádný kód není bez chyby a uživatelé chyby nedokáží reportovat dobře. Přesně od toho jsou nástroje jako je Sentry, které chyby dokáží trackovat v širším kontextu.

Sentry - Jak a proč logovat chyby

V každém systému, každé aplikaci či programu může někdy dojít k chybě. Ta může být způsobena přímo chybou v kódu vývojářů, nebo chybou v knihovnách třetích stran. Anebo je nějaká služba nedostupná. Ať je chyba jakákoli, je vhodné být o ní informován. Souborové logy na serveru s aplikací jsou ta nejjednodušší možnost. Ale to někdo musí pravidelně kontrolovat.

Předmět emailu: Systém
Zpráva: Nic nefunguje!!!!!!!

Pokud chybu reportuje až uživatel, může to dopadnout třeba tak, jak je zmíněno výše, nebo znázorněno obrázku. V prvním případě chyba byla v jediné malé části administrace, kterou bych jinak hledal asi 2 hodiny. Se Sentry jsem o ní věděl ještě dříve, než zpráva přišla.

6 nejhorších způsobů jak reportovat chybuZdroj: CommitStrip.com

Automatické trackování

Systémy jako Sentry dokáží k reportované chybě přidat doplňující kontext, který může být libovolný. Přihlášený uživatel, prostředí, na kterém chyba vznikla, vlastní tagy a mnoho dalšího. Zároveň o chybě dokáže notifikovat emailem či na Slack, nebo se napojit na další externí systémy. Výhodou je, že pro menší projekty a týmy je zcela zdarma!

Osobně používám Sentry jak na backend v PHP tak na JavaScript na frontendu. Existují ale knihovny do všech možných jazyků i frameworků. V dokumentaci jsou dobře zpracované návody včetně ukázek kódu na vše, co Sentry umí. A kdokoli ji může doplnit přes pull request.

<script src="https://browser.sentry-cdn.com/X.Y.Z/bundle.min.js" integrity="sha384-..." crossorigin="anonymous"></script>
<script>
    Sentry.init({
        dsn: "https://XXX@sentry.io/ZZZ",
        release: "kutaccz@v1.3.5",
        environment: "production",
        whitelistUrls: ["https://www.kutac.cz"]
    });
</script>

Reporty s ukázkami kódu

U některých jazyků Sentry dokáže do reportu zahrnout i callstack včetně ukázek kódu, kde k chybě došlo. Pro minifikované JS je ale potřeba mít správně vygenerované .map soubory. Ty lze nahrát přímo do Sentry nebo je mít veřejně dostupné.

Report včetně ukázky kódu

Zpětná vazba na stránce s chybou 500 a mnoho dalšího

Sentry umožňuje pomocí JavaScriptu přidat na svou stránku formulář pro zpětnou vazbu. I když uživatelská zpětná vazba může dosti nejasná, výjimky se najdou. Nemusí vám poté psát email, ale připsat svou zprávu přímo k automaticky reportované chybě.

Sentry toho ale nabízí mnohem více a jak již bylo zmíněno, vše je pro menší projekty s pár lidmi zdarma. Není tedy důvod otálet s nasazením na další systémy.


Zkušenosti se Sentry, nebo jinými alternativami sdílejte v komentářích!

K tomuto článku již není možné přidávat další komentáře