Hoppa till innehållet
Kom igång

Fel och stackspår

Ett fel som slår i webben, i jobbkön och i api:t är ett fel. Grupperingen samlar det till en post med en gemensam orsaksvy, källkartan översätter stackspåret tillbaka till din egen rad, och versionen som körde står bredvid.

Ingår från nivån Fri0 kr

Felgruppering över tjänster, med gemensam orsaksvy, ligger i Team. Källkartor, versionsspårning och koppling till commit ingår redan i Fri.

RÅHÄNDELSEREN ORSAKTypeErrorcart.total is undeffp 8c1d2f1282413771 NOTIS, INTE 377
Gruppering, källkartor, commit
Så fungerar det

Fel och stackspår i fyra stycken

Grupperingen läser felet, inte tidpunkten

Två händelser hör ihop när de bär samma meddelande, samma kodrad och samma toppram i stackspåret. Klienten normaliserar meddelandet innan det skickas, så att ett ordernummer eller ett id inte splittrar en grupp i tusen.

  • En grupp har en orsaksvy, en tidslinje och en lista över de tjänster den slog i.
  • Maskningen körs före grupperingen, så en e-postadress i meddelandet blir [epost] och delar inte upp gruppen.
  • Gruppen bär första och senaste förekomsten, så du ser om felet är nytt eller gammalt innan du öppnar det.

Källkartor gör stackspåret läsbart

Ett minifierat stackspår pekar på en rad ingen har skrivit. Kartan laddas upp i samma steg som bygget och ligger aldrig publikt, så att din källkod inte blir läsbar för någon som öppnar webbläsarens verktyg.

  • Raden i vyn är din rad, med filnamnet du känner igen.
  • Kartan knyts till fältet release, alltså till versionen som körde när felet uppstod.
  • En gammal karta ligger kvar så länge historiken gör det, så ett fel från förra veckan går att läsa i dag.

Versionen och commiten står bredvid felet

Fältet release i klienten är den enda inställning som behövs för att koppla ihop ett fel med koden som orsakade det. Sätt den till samma sträng som bygget bär, så pekar felet vidare till commiten.

  • Ett fel som slutar dyka upp efter en utgåva markeras som löst i den utgåvan.
  • Ett fel som kommer tillbaka i en senare utgåva öppnas igen, i stället för att tyst räknas in i den gamla gruppen.
  • Utgåvorna ligger i en lista, så att du ser vilken som bar flest nya fel.

Kontexten följer med, personuppgifterna gör det inte

Andra argumentet till captureError är ett fritt objekt. Det maskas fält för fält innan det lämnar enheten, och det som blir kvar är det du faktiskt behöver för att förstå felet.

  • Ett fältnamn som innehåller något ur standardlistan ersätts med [maskerad].
  • Fem mönster maskas oavsett vilket fält de står i, bland dem personnummer och kortnummer.
  • Maskningen går sex nivåer ned i ett nästlat objekt, och en lista kortas till femtio poster.
  • Tvåtusen händelser blir en grupp med en orsak.
  • Stackspåret pekar på er egen rad, inte på den minifierade.
  • Versionen som byggde raden står bredvid felet.
Siffrorna

Talen kommer ur koden

Varje tal nedan går att kontrollera mot filen som står under tabellen. Ett tal på en publik yta är ett påstående, och ett påstående utan plats är ett löfte.

Tak per session, standardvärde
100 händelser
Fältnamn som maskas som standard
21
Mönster som maskas oavsett fältnamn
5
Djup som maskningen går ned i ett objekt
6 nivåer
Händelser per månad, planen Fri
500 000 händelser
Loggvolym, planen Fri
20 GB per månad
Historik, planen Fri
30 dagar
Användare, planen Fri
utan tak

Grupperingens indata, maskningen och taket per session ligger i packages/telemetry/src/index.ts, i capture, captureError, scrub och scrubString.

app/routes/kassa.tsxTypeScript
1try {
2  await slutforKop(order);
3} catch (fel) {
4  log.captureError(fel, { ordernummer: order.id, epost: kund.epost });
5  // fältet epost ersätts med [maskerad] innan händelsen lämnar enheten
6  visaFelruta();
7}

captureError plockar ut message, stack, code och traceId ur felet och skickar dem som en händelse av typen error. Är det som kastades inte ett Error görs det om till ett, så att raden fungerar även när något kastar en sträng.

main.4f2a.jsat t (1:28741).mapCart.tsx383940414243Cart.tsx:42:17
FELFREKVENSv2.14.0a91f3c7mainHEAD
Gäller även här

Taket är hårt, också för den här delen

Ingen del av produkten kan skapa en post på fakturan på egen hand. Kvoten tar slut, och sedan slutar vi ta emot tills ni själva höjer taket.

  • Volym över kvoten faktureras inte, eftersom volym över kvoten inte tas emot.
  • Det som slängdes räknas i dropped och går att läsa med stats.
  • Höjningen är ett aktivt val ni gör i projektet, aldrig en automatisk uppgradering.
  • Inmatningen svarar GDR-LOG-0500 när kvoten är förbrukad, och koden går att larma på.
Frågor

Det ni undrar om fel och stackspår

Vanliga frågor

Vad räknas som samma fel?

Samma meddelande efter maskning, samma kodrad och samma toppram i stackspåret. Ett ordernummer inuti meddelandet splittrar alltså inte gruppen.

Kan jag slå ihop två grupper som borde vara en?

Ja. Två grupper går att slå ihop manuellt, och sammanslagningen gäller framåt också, så nya händelser hamnar i den gemensamma gruppen.

Ligger källkartan publikt?

Nej. Den laddas upp i bygget och läses bara när ett stackspår ska översättas. Den serveras aldrig från din sajt.