2016-09-18 2 views
1

Ich habe Firebase Crash in meine App integriert und einen benutzerdefinierten Uncaught Exception Handler erstellt, in dem ich den Status der nützlichen App protokolliere, bevor der Absturz gesendet wird. In der Firebase-Konsole sind die Protokolle jedoch erwartungsgemäß nicht neben der Ausnahme enthalten. Warum ist das der Fall? Wie stelle ich sicher, dass meine Logs immer gesendet werden?Firebase-Absturzprotokolle nicht gesendet

Unten ist eine abgespeckte Version der uncaughtException-Methode des Handlers.

public void uncaughtException(Thread thread, final Throwable ex) { 
    FirebaseCrash.logcat(Log.INFO, TAG, "App state"); 
    FirebaseCrash.report(ex); 
    prior_handler.uncaughtException(thread, ex); 
} 
+0

Wenn Firebase Crash installiert ist, müssen Sie report() nicht aufrufen, um etwas zu senden. Dies wird im UncaughtExceptionHandler passieren, den Firebase für sich selbst hinzufügt. Sie protokollieren Nachrichten einfach vor einem Absturz oder einem Aufruf an report(), und sie sollten an den Bericht unterhalb des Stack-Trace angehängt werden. Wir haben keine Beschwerden über fehlende Baumstämme gehört. –

+0

@DougStevenson Danke für Ihre Antwort. Ich habe meinen eigenen UEHandler erstellt, weil ich im Fall von nicht abgefangenen Ausnahmen eine zusätzliche Protokollierung hinzufügen möchte, die ansonsten unnötig ist. Während des Debugging sehe ich, dass mein Handler (siehe Beispiel oben) aufgerufen wird und die Ausnahme in der Konsole, aber nicht im Protokoll angezeigt wird. Wenn ich keinen benutzerdefinierten Handler verwende, wie kann ich nur zusätzliche Protokolle "injizieren", wenn es eine nicht abgefangene Ausnahme gibt? – sidiabale

+0

Ich würde erwarten, dass jedes Protokoll funktioniert, wenn es vor Firebases UEH aufgerufen wird. Ein mögliches Problem ist, dass Ihre UEH möglicherweise * vor * Firebase registriert wird. In diesem Fall wird Firebase bei einem Absturz zuerst vor Ihnen ausgeführt, und Ihr zusätzliches Protokoll wird nicht angezeigt. An welchem ​​Punkt registrieren Sie Ihre? Firebase passiert während eines ContentProvider onCreate (was sehr früh ist). –

Antwort

1

Was schließlich für mich gearbeitet (wie von Doug Stevenson in einem seiner Kommentare auf meine Frage oben) war ein Projekt Firebase pro Android App zu erstellen.

Gern könnte ich mit dieser Konfiguration meine Produktionsabsturzberichte/-protokolle von den Debug-Abrufen trennen, indem ich den applicationIdSuffix Trick here verwende.