- Een React Native-app die je lokaal kunt draaien.
- Een LogBrew-project. Zie Projecten.
- Een ingelogde CLI. Zie De CLI instellen.
De SDK installeren
Installeer beide pakketten in de map van de app. Laat de React- en React Native-dependencies van de app staan:Een SDK-sleutel voor het project maken
Geef de app een projectgebonden SDK-sleutel die alleen kan schrijven. Expo zet elkeEXPO_PUBLIC_*-waarde in de appbundel. Zet nooit toegangsgegevens
van een account of server in die variabele.
CLI v0.1.32 of nieuwer maakt een sleutel voor een bestaand project. De
opdracht maakt geen nieuw project. Zoek het project-ID op:
--abandon-retry niet.
Houd het sleutelbestand buiten versiebeheer. Gebruik niet de toegangsgegevens
van het account waarmee je de CLI hebt geautoriseerd. Zet de sleutel voor
lokale ontwikkeling met Expo in een .env.local-bestand in de hoofdmap van de
app, dat buiten versiebeheer blijft:
process.env.EXPO_PUBLIC_LOGBREW_CLIENT_KEY staan
in de setupmodule hieronder. Laad de app volledig opnieuw nadat je de waarde
hebt gewijzigd. Zie
Expo-omgevingsvariabelen
voor configuratie tijdens de build. Een React Native-app zonder Expo laadt de
sleutel in plaats daarvan via een eigen configuratie.
De client maken
Zet deze setup in één module die de app bij het opstarten laadt. Maak niet bij elke render een client. Zet de service, de omgeving en de release incontext:
stopAppStateListener() aan als de app wordt
afgesloten.
Met de native wachtrij kan maar één actieve client een sleutel gebruiken. Een
tweede client voor dezelfde sleutel mislukt met configuration_error. Dat is
nog een reden om de client maar één keer te maken.
De testlog versturen en vinden
RoepverifyLogBrewSetup() één keer aan vanuit een testactie die alleen in
ontwikkeling bestaat. Wacht het resultaat af en handel een afgewezen promise
af. Print de sleutel en de eventbatch niet.
Een 2xx-resultaat met batches boven 0 laat zien dat LogBrew de batch heeft
geaccepteerd. Een lege flush geeft 204 terug met 0 pogingen en 0 batches,
omdat automatische aflevering het event al eerder kan versturen. Lees in
beide gevallen de opgeslagen log met de CLI:
RecordingTransport.alwaysAccept() is alleen voor lokale tests. Het geeft een
synthetische 202 terug en verstuurt geen request.
Aflevering offline en na een herstart
Leesclient.deliveryHealth().storage in de draaiende app:
persistent: de client gebruikt de native wachtrij. Openstaande events worden na een herstart van de app opnieuw geladen.memory: openstaande events gaan verloren als de JavaScript-runtime opnieuw start.
persistentQueue: "auto" gebruikt de native wachtrij als
de app-binary de native module van LogBrew bevat. Expo Go en oudere binary’s
gebruiken het geheugen. Een update met alleen JavaScript kan de native module
niet toevoegen.
Heeft een productie-app aflevering na een herstart nodig, zet dan
persistentQueue: "required". Het maken van de client mislukt dan met
configuration_error als de native wachtrij ontbreekt. Bouw de app opnieuw
met de native module. Gebruik persistentQueue: "disabled" alleen als je een
wachtrij in het geheugen wilt.
De native wachtrij bevat maximaal 1.000 events en 4 MiB aan eventgegevens.
Kleinere limieten van de client gelden ook. Events in de native wachtrij
behouden hun event-ID’s na een herstart.
Elk event wordt minstens één keer afgeleverd. Door een nieuwe poging kan een
event dus twee keer worden verstuurd. Komen het event-ID en de inhoud overeen met een
event dat LogBrew al heeft geaccepteerd, dan slaat LogBrew het niet opnieuw
op. Een flush op de achtergrond is een poging, geen bewijs van aflevering.
Test het vastleggen zonder verbinding en test een herstart van de app. Zoek daarna
het opgeslagen event in het project.
De afleverstatus lezen
client.deliveryHealth() geeft de status van de wachtrij en de aflevering
terug, zonder eventinhoud. Lees eerst deze velden:
De inhoud van de log kiezen
Houd elk bericht kort en specifiek. Beschrijf de uitkomst in de app, zoals een mislukt request of een geplande nieuwe poging. Neem geen namen, e-mailadressen, toegangstokens, formulierwaarden of request-body’s op. Gebruik de ernst die bij het event past:info, warning, error of
critical. Houd de service, de omgeving en de release consistent, zodat je
verwante records kunt vinden.
npx react-native log-ios en npx react-native log-android tonen lokale
apparaatlogs. Ze doorzoeken LogBrew niet. Zie
Native debuggen in React Native.
Herstellen na een mislukte controle
Een mislukteflush() wordt afgewezen met een SDK-foutcode. Houd sleutels en
eventbody’s buiten foutrapporten.
Zie Problemen oplossen voor meer controles.
Debug ID’s van Expo in releasebundels behouden
Maak de Metro-configuratie van Expo via LogBrew. De runtimebundel krijgt dan hetzelfde Debug ID als de bijbehorende source map:withLogBrewMetroConfig(). Gebruik die wrapper niet met
Expo. Doe je dat toch, dan stopt de productiebuild met een bericht dat naar
getLogBrewExpoConfig() verwijst.