1
votes

Comment enregistrer des données supplémentaires lors d'un crash

De temps en temps, je reçois un NPE dans une application que j'ai publiée sur le Play Store et j'aimerais enregistrer des informations supplémentaires afin de mieux comprendre ce qui ne va pas.

Par conséquent, j'ai suivi ce guide de Fabric pour des rapports améliorés en espérant que je le ferai voir la valeur d'une variable que je consigne dans la trace de la pile.

Voici le code que j'ai utilisé:

id = table.getId();    // <------ line that throws NPE
Crashlytics.log("userIsOnline: " + isOnline);   // <----- variable I want to know it's value

Aujourd'hui, j'ai obtenu la trace de la pile de deux plante mais aucune variable n'a été enregistrée. N'est-ce pas ainsi que je dois le consigner ou y a-t-il autre chose que je n'ai pas compris?


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser FirebaseAnalytics pour un événement de journal lors d'un crash. Vous pouvez l'utiliser pour consigner des événements avec la méthode logEvent () .

L'exemple suivant montre comment consigner un événement SELECT_CONTENT suggéré:

val params = Bundle()
params.putString("image_name", name)
params.putString("full_text", text)
firebaseAnalytics.logEvent("share_image", params)

Vous pouvez enregistrer vos propres événements personnalisés comme indiqué dans cet exemple:

val bundle = Bundle()
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id)
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name)
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image")
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, 
bundle)

J'espère que l'exemple ci-dessus vous aidera.


8 commentaires

Mais avec ce code, j'enregistre tout le temps ces données, non? Je veux me connecter uniquement pendant un événement de plantage.


À droite, vous pouvez enregistrer un événement lorsque votre panne se produit.


id = table.getId (); // <------ ligne qui lance NPE Crashlytics.log ("userIsOnline:" + isOnline);


ici vous pouvez trouver le gestionnaire de crash personnalisé stackoverflow.com/ questions / 25203616 /…


Mais quand la ligne avec table.getId () ne lance pas, j'obtiens toujours un événement


Avez-vous utilisé try .. catch block?


non. J'essaierai d'ajouter un try..catch. Merci pour votre réponse + le lien


Je suis un peu occupé en ce moment et je ne peux pas rejoindre le chat. Je vais essayer d'ajouter un try..catch et l'autre réponse à ma question d'un autre utilisateur et je reviendrai plus tard avec mes conclusions. Merci beaucoup pour votre temps, vos réponses et votre volonté d'aider :)



1
votes

Comme le dit la documentation officielle

Crashlytics.log () n'écrira que dans le rapport d'erreur Crashlytics.

Utilisez-le ci-dessus id = table.getId (); et vérifiez les données dans l'onglet Non fatals de Fabric.


0 commentaires

0
votes
Log non-fatal exceptions
In addition to automatically reporting your app’s crashes, Crashlytics lets you log non-fatal exceptions.

On Android, that means you can log caught exceptions in your app’s catch blocks:

try {
    methodThatThrows();
} catch (Exception e) {
    Crashlytics.logException(e);
    // handle your exception here
}

0 commentaires