Remote Logging — was es ist, Erfassungstools und Methoden der Remote-Log-Analyse

Autor: IT Sectr Veröffentlicht: 2026-05-28 Lesezeit: 8 Min.

Remote Logging ist ein Mechanismus zum Senden von Logs von einem mobilen Gerät an einen entfernten Server für zentrale Analyse und Überwachung. Im Gegensatz zum lokalen Logging, das Daten auf dem Gerät speichert, ermöglicht die Remote-Erfassung das Erkennen von Fehlern und Anomalien von allen Benutzergeräten in Echtzeit. Laut Sentry Resource Library finden Anwendungen mit Remote Logging 92% der Produktionsfehler innerhalb der ersten Stunde nach der Veröffentlichung, verglichen mit 15% bei ausschließlicher Verwendung von Crash-Reports. Dies ist ein unverzichtbares Tool für jedes mobile Entwicklungsteam: Firebase Crashlytics, Sentry und Datadog bieten fertige SDKs für iOS und Android.

Wichtige Punkte

  • Remote Logging — Senden von Logs von einem Gerät an einen Server für zentrale Überwachung und Analyse von Produktionsfehlern
  • Firebase Crashlytics — kostenloser Google-Dienst zum Sammeln von Abstürzen und benutzerdefinierten Logs auf Android und iOS
  • Sentry — Fehlerüberwachungsplattform mit Unterstützung für Breadcrumbs, Benutzerkontext und Distributed Tracing
  • Logcat — das Standard-Loggingsystem von Android, remote zugänglich über ADB und Android Studio
  • Batching — Gruppierung von Logs auf dem Gerät und Batch-Versand zur Schonung von Akku und Traffic

Was ist Remote Logging

Remote Logging ist der Prozess des Sammelns von Logs von entfernten Geräten und deren Übertragung an einen zentralen Server zur Analyse. Im Kontext der mobilen Entwicklung umfasst Remote Logging nicht nur Crash-Reports, sondern auch benutzerdefinierte Ereignisse, Breadcrumbs, Leistungskennzahlen und Benutzerszenarien.

Der Hauptunterschied zwischen Remote Logging und Crash Reporting ist die Proaktivität. Crash Reporting sammelt nur Daten über bereits aufgetretene Anwendungsabstürze. Remote Logging sammelt die Ereigniskette vor dem Absturz: welche Bildschirme der Benutzer geöffnet hat, welche Anfragen er gestellt hat, welche Daten er eingegeben hat. Dies ermöglicht die Reproduktion des Fehlerszenarios ohne Kommunikation mit dem Benutzer.

Apple bietet einen integrierten Mechanismus zur Remote-Log-Erfassung über .logarchive, aber für Produktionsanwendungen werden fast immer Drittanbieterdienste verwendet. Das Android SDK enthält Logcat, das über ADB remote zugänglich ist, jedoch nicht für Endbenutzergeräte ohne Debug-Modus.

Architektur der Remote-Log-Erfassung

Die Remote-Logging-Architektur besteht aus drei Komponenten: dem Client-SDK auf dem Gerät, das Logs sammelt und puffert, dem Transport-Protokoll zum Senden von Daten und dem Server für Speicherung und Visualisierung.

KomponenteRolleBeispiele
Client-SDKSammlung, Pufferung, BatchingFirebase SDK, Sentry Cocoa, Timber
TransportDatenübertragung über HTTPSREST, gRPC, WebSocket
ServerSpeicherung, Indizierung, AlarmeSentry, Crashlytics, Datadog

Das Client-SDK puffert Logs im RAM und spült sie regelmäßig in Batches zum Server. Ist das Gerät offline, werden Logs in einer lokalen Datei gespeichert und bei der nächsten Netzwerkverbindung gesendet. Puffergröße und Sendeintervall sind konfigurierbar: typische Werte sind 50 Ereignisse oder 30 Sekunden.

Transportprotokolle

HTTPS REST ist das häufigste Protokoll für Remote Logging. Das SDK serialisiert Logs in JSON und sendet sie per POST-Anfragen an den Server-Endpunkt. gRPC ist eine Alternative mit binärer Serialisierung (Protocol Buffers), die 30–40% kompakter als JSON und auf mobilen Geräten mit instabilen Verbindungen schneller ist. WebSocket wird für Echtzeit-Logging beim Debuggen verwendet, aber aufgrund des Stromverbrauchs selten in der Produktion.

Firebase Crashlytics: Absturz- und Log-Erfassung

Firebase Crashlytics ist ein kostenloser Google-Dienst zum Sammeln von Crash-Reports und benutzerdefinierten Logs. Es ist in das Firebase SDK integriert und benötigt keinen separaten Server. Crashlytics sammelt automatisch Stack-Traces, Gerätestatus, OS-Version und geöffnete Bildschirme zum Zeitpunkt des Absturzes.

Benutzerdefinierte Logs in Crashlytics werden über die Methode log() hinzugefügt — sie werden nicht sofort an den Server gesendet, sondern in einem Ringspeicher abgelegt und dem nächsten Crash-Report beigefügt. Dies ist ein wesentlicher Unterschied zu Sentry, wo jedes Log ein separates Ereignis ist. Das maximale Volumen benutzerdefinierter Logs in Crashlytics beträgt 64 KB pro Absturz.

kotlin
// Firebase Crashlytics — benutzerdefinierte Logs auf Android
import com.google.firebase.crashlytics.FirebaseCrashlytics

class CheckoutViewModel {
    fun processPayment(amount: Double) {
        FirebaseCrashlytics.getInstance()
            .log("Payment started: amount=$amount")
        try {
            process(amount)
        } catch (e: Exception) {
            FirebaseCrashlytics.getInstance()
                .recordException(e)
        }
    }
}

Firebase Crashlytics unterstützt setUserIdentifier zum Verknüpfen von Abstürzen mit bestimmten Benutzern. Dies hilft festzustellen, ob ein Fehler massenhaft auftritt oder nur einen Benutzer betrifft. setCustomKey fügt jedem Bericht beliebige Schlüssel hinzu — A/B-Testversion, Region, Tarifplan.

Sentry: Breadcrumbs und Benutzerkontext

Sentry ist eine Fehlerüberwachungsplattform, die nicht nur Crash-Reports, sondern auch alle benutzerdefinierten Ereignisse (Breadcrumbs) als unabhängige Datensätze speichert. Im Gegensatz zu Crashlytics ermöglicht Sentry die chronologische Ansicht der Ereigniskette vor einem Fehler — Breadcrumbs sind in der Oberfläche sichtbar, ohne sie aus dem Crash-Log rekonstruieren zu müssen.

Automatische Breadcrumbs in Sentry

Das Sentry SDK sammelt automatisch Breadcrumbs für Systemereignisse: UIViewController-Lebenszyklusänderungen (viewDidLoad, viewWillAppear), Berührungen, Tastendrücke, HTTP-Anfragen über URLSession. Alle diese Ereignisse werden zusammen mit benutzerdefinierten Breadcrumbs in der Fehlerzeitachse angezeigt. Für Android werden Activity- und Fragment-Lebenszyklus, onClick-Ereignisse und Netzwerkanfragen über OkHttp ähnlich erfasst.

Das Sentry SDK für iOS und Android sammelt automatisch Breadcrumbs für UI-Ereignisse: Berührungen, Navigation, Lebenszyklus. Entwickler können benutzerdefinierte Breadcrumbs über addBreadcrumb() mit Angabe von Typ, Kategorie und Ebene hinzufügen. Sentry unterstützt Distributed Tracing: Der Logger verknüpft clientseitige Breadcrumbs mit Backend-Anfragen über eine Trace-ID.

swift
import Sentry

func trackCartEvent(action: String, itemId: String) {
    let crumb = Breadcrumb()
    crumb.level = .info
    crumb.category = "cart"
    crumb.message = "Cart \(action): \(itemId)"
    crumb.data = ["action": action, "item_id": itemId]
    SentrySDK.addBreadcrumb(crumb)
}

Logcat und Remote-Zugriff über ADB

Logcat ist das Standard-Loggingsystem von Android, zugänglich über Android Debug Bridge (ADB). Logcat sammelt alle System- und Anwendungsnachrichten, geordnet nach Ebenen (V, D, I, W, E, F) und Tags. Der Remote-Zugriff auf Logcat funktioniert über ADB per USB oder Wi-Fi, jedoch nur für Geräte im Debug-Modus — Produktionsanwendungen auf Geräten ohne USB-Verbindung sind nicht zugänglich.

Für Remote-Logging in der Produktion auf Android werden Alternativen verwendet: Logcat selbst kann keine Logs an einen Server senden. Seine Rolle ist die lokale Diagnose. Es gibt jedoch Wrapper (Timber, LogcatLive), die Nachrichten unter Beibehaltung der vertrauten Log.d / Log.e-API an Firebase oder Sentry weiterleiten. Timber ermöglicht das Umschalten von Handlern ohne Änderung des Anwendungscodes — ein Debug-Baum schreibt in Logcat, ein Release-Baum sendet mit Batching und Komprimierung an den Server.

Batching und Traffic-Optimierung

Batching ist die Gruppierung mehrerer Logs in eine einzige HTTP-Anfrage, um Traffic und Akku zu schonen. Statt 50 einzelner POST-Anfragen sendet das SDK ein JSON-Array. Typische Strategien: zeitgesteuertes Senden (alle 30 Sekunden), mengenbasiert (alle 50 Ereignisse) oder ereignisbasiert (nur bei kritischen Fehlern).

Bei Anwendungen mit Millionen von Benutzern kann das Log-Volumen Terabyte pro Tag erreichen. Batching reduziert die Anzahl der Anfragen um das 10- bis 50-fache und verringert die Serverlast. Sentry verwendet gzip-Komprimierung auf Transportebene, was das Datenvolumen zusätzlich um 60–70% reduziert.

kotlin
// Einfache Batching-Implementierung auf Android
class LogBatcher {
    private val buffer = mutableListOf<LogEvent>()
    private val maxSize = 50
    private val intervalMs = 30_000L

    fun append(event: LogEvent) {
        buffer.add(event)
        if (buffer.size >= maxSize) flush()
    }

    suspend fun flush() {
        val batch = buffer.toList()
        buffer.clear()
        sendToServer(batch)
    }
}

Komprimierung und Deduplizierung

gzip ist die Standard-Komprimierungsmethode für die HTTP-Übertragung von Logs. Die Sentry- und Crashlytics-SDKs komprimieren den Anforderungstext vor dem Senden automatisch. Deduplizierung entfernt doppelte Nachrichten auf Client-Seite: Tritt dasselbe Ereignis 100 Mal pro Sekunde auf, sendet das SDK es einmal mit dem Feld count = 100.

Typische Fehler beim Remote-Logging

Der häufigste Fehler ist das Protokollieren sensibler Daten. Remote-Logging-SDKs übertragen Daten an den Server, und wenn ein Entwickler versehentlich ein Passwort, Token oder eine Benutzer-E-Mail protokolliert, landen diese Daten in der Cloud-Infrastruktur. Verwenden Sie immer PII-Filterung (personenbezogene Daten) auf SDK-Ebene: Sentry verfügt über einen integrierten beforeSend-Hook zur Bereinigung der Daten vor dem Senden.

Das zweite häufige Problem ist übermäßiges Logging. Wenn jede Fingerbewegung an den Server gesendet wird, wächst das Datenvolumen exponentiell, ebenso wie die Serverkosten. Legen Sie ein Logging-Budget fest: nicht mehr als 1–5 Ereignisse pro Benutzer pro Minute in der Produktion. Senden Sie Debug-Logs nur mit einem Flag, das für bestimmte Geräte aktiviert ist.

Der dritte Fehler ist das Ignorieren des Offline-Szenarios. Wenn das SDK bei fehlendem Netzwerk Logs verliert und sie bei Wiederherstellung der Verbindung nicht wiederherstellt, ist Remote Logging für Benutzer mit instabilen Verbindungen nutzlos. Alle SDKs (Firebase, Sentry) speichern Logs automatisch in einer lokalen Datei zwischen und senden sie bei verfügbarer Netzwerkverbindung, aber diese Einstellung muss überprüft werden.

Häufig gestellte Fragen

Wie unterscheidet sich Remote Logging von Crash Reporting?

Crash Reporting sammelt nur Informationen über Anwendungsabstürze. Remote Logging sammelt alle Ereignisse: benutzerdefinierte Logs, Breadcrumbs, Leistungskennzahlen, UI-Ereignisse. Crash Reporting ist eine Teilmenge von Remote Logging, kein Ersatz.

Welchen Dienst wählen: Firebase Crashlytics oder Sentry?

Crashlytics ist kostenlos und für grundlegende Crash-Reports ausreichend. Sentry ist besser, wenn Sie Breadcrumbs, Distributed Tracing, benutzerdefinierte Dashboards und flexible Warnmeldungen benötigen. Für Unternehmensprojekte mit Compliance-Anforderungen ist Sentry in einer Self-Hosted-Version verfügbar.

Wie vermeide ich das Protokollieren unnötiger Daten in der Produktion?

Verwenden Sie Logging-Ebenen: Senden Sie Debug/Info-Logs nur vom Entwicklergerät über das isDebuggable-Flag. Filtern Sie andere Ebenen (Warn, Error) über einen beforeSend-Hook und entfernen Sie Felder mit PII. Definieren Sie die maximale Log-Größe pro Sitzung.

Kann Logcat für die Remote-Log-Erfassung verwendet werden?

Logcat unterstützt kein Remote-Senden an einen Server. Verwenden Sie für Remote Logging unter Android Timber zur Weiterleitung an Firebase oder Sentry und behalten Sie Logcat für das Debuggen über USB bei. Timber ersetzt die Android Log-API und fügt pflanzbare Bäume hinzu.

Wie viele Logs können ohne Beeinträchtigung des Akkus gesendet werden?

Bis zu 50 Ereignisse pro Minute pro Gerät beeinträchtigen den Akkuverbrauch bei Verwendung von Batching (Batch-Versand statt Einzelsendung) nicht merklich. Bei 200+ Ereignissen pro Minute ist das WLAN/Modem ständig aktiv — der Akku entlädt sich 15–25% schneller.

Zusammenfassung

  • Remote Logging — Senden von Logs von einem mobilen Gerät an einen Server zur zentralen Analyse, einschließlich Crash-Reports, Breadcrumbs und Leistungskennzahlen
  • Firebase Crashlytics — kostenloser Google-Dienst mit benutzerdefinierten Logs in einem Ringspeicher, die Crash-Reports beigefügt werden
  • Sentry — Plattform mit unabhängigen Breadcrumbs und Distributed Tracing, die die Anzeige der Ereigniskette vor einem Fehler ohne Rekonstruktion aus dem Crash-Log ermöglicht
  • Batching — Gruppierung von 50+ Logs in eine Anfrage mit gzip-Komprimierung, Reduzierung von Traffic und Serverlast um das 10- bis 50-fache
  • PII-Filterung — obligatorische Bereinigung sensibler Daten über beforeSend-Hooks, um Datenlecks personenbezogener Daten an den Server zu verhindern
  • Logging-Budget — nicht mehr als 1–5 Ereignisse pro Benutzer pro Minute in der Produktion, Debug-Logs nur mit isDebuggable-Flag auf bestimmten Geräten

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch