Skip to main content
Verstuur logs vanuit een React Native-app naar LogBrew. Begin met één testlog en zoek die daarna met de CLI op in het juiste project. Deze handleiding gebruikt Expo. Een React Native-app zonder Expo laadt de sleutel via een eigen configuratie. Voordat je begint, heb je dit nodig:
  • 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 elke EXPO_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:
Maak de sleutel. Gebruik een nieuw bestandspad in een map waar alleen de eigenaar bij kan:
Ga pas verder als de opdracht slaagt. Is het resultaat onduidelijk, voer dan dezelfde opdracht opnieuw uit met dezelfde argumenten. Gebruik --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:
Laat de directe verwijzing 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 in context:
Het fetch-transport schakelt automatische aflevering in, met een begrensd aantal nieuwe pogingen en een wachtrij. Voeg geen tweede flush-timer toe. De AppState-listener vraagt een laatste flush aan als de app inactief wordt of naar de achtergrond gaat. Roep 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

Roep verifyLogBrewSetup() éé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:
Controleer de eventtijd en de service in het resultaat. Een leeg resultaat laat de oorzaak niet zien. Controleer het project, de sleutel en het tijdsbereik. RecordingTransport.alwaysAccept() is alleen voor lokale tests. Het geeft een synthetische 202 terug en verstuurt geen request.

Aflevering offline en na een herstart

Lees client.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.
De standaardwaarde 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 mislukte flush() 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:
Gebruikt de app de bundle mode van React Native Worklets, pas die transformatie dan toe na de helper van LogBrew:
De helper behoudt bestaande pre-serialisatieplug-ins van Expo. Een React Native-app zonder Expo verpakt de volledige Metro-configuratie in plaats daarvan met withLogBrewMetroConfig(). Gebruik die wrapper niet met Expo. Doe je dat toch, dan stopt de productiebuild met een bericht dat naar getLogBrewExpoConfig() verwijst.