Log Rotation: Funktionsweise, Rotationsstrategien und Konfiguration fürMobile Projekte

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

Log Rotation ist ein automatischer Mechanismus zur Verwaltung von Logdateien, der durch Archivierung, Komprimierung und Löschung alter Einträge ein Überlaufen der Festplatte verhindert. In mobilen Anwendungen sammeln sich Logs auf dem Gerät des Benutzers an und können ohne Rotation innerhalb weniger Wochen Gigabyte an Speicher belegen. Laut Redis-Dokumentation reduziert eine korrekte Konfiguration der Logrotation das Risiko eines Systemausfalls aufgrund einer vollen Festplatte um 99% im Vergleich zu unkontrolliertem Logwachstum. Die wichtigsten Rotationsstrategien sind: nach Dateigröße, nach Zeit und nach Anzahl der Dateien — jede wird je nach Nutzungsszenario ausgewählt: logrotate unter Linux, CocoaLumberjack auf iOS und Timber auf Android unterstützen alle drei Ansätze.

Wichtige Punkte

  • Log Rotation — automatischer Wechsel der aktiven Logdatei bei Erreichen eines festgelegten Schwellenwerts mit Archivierung oder Löschung alter Dateien
  • Größenbasierte Rotation — erstellt eine neue Datei, wenn die aktuelle das Limit erreicht (typisch 10–100 MB), die alte wird in .gz komprimiert
  • Zeitbasierte Rotation — Dateiwechsel alle N Stunden oder einmal täglich unabhängig von der Größe, praktisch für tägliche Dumps
  • logrotate — das Standard-Linux-Dienstprogramm zur automatischen Rotation von System- und Anwendungslogs
  • Festplattenkontingent — begrenzt das Gesamtvolumen aller Logs auf dem Gerät; bei Überschreitung werden die ältesten Dateien gelöscht

Was ist Log Rotation

Log Rotation ist der Prozess des periodischen Wechselns der aktiven Logdatei zu einer neuen, bei gleichzeitiger Archivierung, Komprimierung oder Löschung der alten. Ohne Rotation wächst eine einzelne Logdatei unbegrenzt, bis sie die gesamte Festplattenpartition füllt, was zu Anwendungsausfällen und Datenverlust führt.

Typisches Szenario: Eine Anwendung schreibt Logs in die Datei app.log. Wenn app.log 100 MB erreicht, benennt das System sie in app.log.1 um, komprimiert sie in app.log.1.gz und erstellt eine neue leere app.log. Beim nächsten Füllen wird app.log.1 zu app.log.2, app.log.1.gz wird zu app.log.2.gz und die alte app.log.2.gz wird gelöscht. Dieser Mechanismus heißt Rotation mit Keep Count — die Anzahl der Archivkopien ist festgelegt.

Laut Splunk (2023) ist eine falsche Rotationskonfiguration die Ursache für 40% der Vorfälle im Zusammenhang mit der Erschöpfung des Speicherplatzes auf Anwendungsservern. Für mobile Geräte ist die Rotation noch kritischer, da der Benutzer Logs nicht manuell verwalten kann und soll.

Log-Rotationsstrategien

Log Rotation unterstützt drei grundlegende Strategien, die kombiniert werden können. Die Wahl der Strategie hängt vom Anwendungstyp ab: Serversysteme verwenden häufiger zeitbasierte Rotation, mobile — größenbasierte, eingebettete — dateianzahlbasierte.

StrategieAuslöserWann verwenden
Nach GrößeDatei hat N Bytes erreichtHochlastsysteme mit unvorhersehbarem Logvolumen
Nach ZeitN Stunden/Tage vergangenTägliche Dumps, Compliance-Anforderungen
Nach DateianzahlN Dateien erstelltMobile Geräte mit begrenztem Speicherplatz

Größenbasierte Rotation — die häufigste

Die größenbasierte Rotation stellt sicher, dass keine Logdatei ein festgelegtes Limit überschreitet. Das Limit wird basierend auf dem verfügbaren Speicherplatz und der Protokollierungshäufigkeit gewählt. Für einen Server beträgt das typische Limit 100–500 MB pro Datei, für ein mobiles Gerät 1–10 MB. Wenn die Anwendung aggressiv protokolliert, sollte das Limit gesenkt werden, sonst erfolgt die Rotation alle paar Minuten.

Zeitbasierte Rotation — für Compliance

Die zeitbasierte Rotation ist unabhängig vom Logvolumen — die Datei wird streng nach Zeitplan gewechselt. Praktisch für Systeme, in denen Logs für eine festgelegte Anzahl von Tagen aufbewahrt werden müssen: tägliche Rotation mit Keep Count = 30 bedeutet 30 Tage Aufbewahrung. Der Nachteil — eine einzelne Datei kann bei starker Last auf ein Gigabyte pro Tag anwachsen.

logrotate unter Linux: Konfiguration und Beispiele

logrotate ist das Standard-Linux-Dienstprogramm zur automatischen Logrotation. Es wird über cron ausgeführt und verarbeitet Konfigurationsdateien aus /etc/logrotate.d/. Jeder Dienst (nginx, postgresql, Anwendung) erstellt seine eigene Konfiguration mit Angabe der Logpfade, der Rotationsstrategie und der Aktionen nach der Rotation.

cpp
# /etc/logrotate.d/myapp — Logrotation der Anwendung
/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data www-data
    postrotate
        kill -HUP $(cat /var/run/myapp.pid)
    endscript
}

Diese Konfiguration rotiert Logs täglich, behält 7 Archivkopien, komprimiert alte Dateien mit gzip (außer der letzten — delaycompress), gibt keinen Fehler aus, wenn Logs fehlen (missingok), rotiert keine leeren Dateien (notifempty) und erstellt die Datei mit Berechtigungen 0640 neu. Nach der Rotation sendet sie ein HUP-Signal an den Anwendungsprozess über ein postrotate-Skript.

logrotate-Parameter

size — Rotation bei Erreichen einer Größe (size 100M). rotate — Anzahl der Archivkopien (rotate 7). compress — gzip-Komprimierung. dateext — fügt dem Dateinamen das Datum anstelle einer Sequenznummer hinzu. sharedscripts — führt postrotate einmal für alle Dateien aus, nicht für jede einzeln. maxage — löscht Archive, die älter als N Tage sind.

Log Rotation in mobilen Anwendungen

Auf mobilen Geräten ist Log Rotation kritisch, da der Benutzer das Dateisystem nicht verwaltet und nicht erwartet, dass die Anwendung Gigabyte mit Logs belegt. iOS und Android haben integrierte Mechanismen: os_log auf iOS verwendet einen Ringpuffer fester Größe (Rotation durch Überschreiben), Android Logcat hat einen begrenzten Puffer im Kernel.

Für benutzerdefinierte Dateilogs auf iOS wird CocoaLumberjack mit der Klasse DDFileLogger verwendet, die größen- und zeitbasierte Rotation unterstützt. Auf Android — Logback oder benutzerdefinierte Implementierungen über RollingFileAppender. Beide Tools ermöglichen die Festlegung der maximalen Dateigröße und der Anzahl der Archivkopien.

swift
// CocoaLumberjack — Dateirotation auf iOS
import CocoaLumberjack

let fileLogger = DDFileLogger()
fileLogger.maximumFileSize = 1024 * 1024 // 1 MB
fileLogger.logFileManager.maximumNumberOfLogFiles = 5
DDLog.add(fileLogger)

iOS: os_log benötigt keine Rotation — Nachrichten werden im Ringpuffer überschrieben. Wenn die Anwendung jedoch benutzerdefinierte Dateilogs schreibt (zum Debuggen oder zum Senden an den Server), muss die Rotation manuell konfiguriert werden. CocoaLumberjack ist die Standardwahl für iOS-Teams — es komprimiert Archive automatisch in .gz und löscht alte Dateien bei Überschreitung des Limits.

Warum Rotation auf Android wichtig ist

Android schränkt Anwendungen nicht beim Schreiben von Logs in ihr eigenes Verzeichnis ein. Wenn ein Entwickler Debug-Logs ohne Rotation in eine Datei schreibt, können sie bei aktiver Nutzung innerhalb eines Monats 500 MB bis 1 GB belegen. Der Benutzer entdeckt das Problem, wenn das System eine Speicherwarnung anzeigt, und löscht die App. Logback mit RollingFileAppender löst dieses Problem: ein Limit von 5 MB mit 3 Archiven garantiert, dass Logs nie 20 MB überschreiten.

Beispiele für die Rotationsimplementierung auf iOS und Android

Nachfolgend finden Sie Beispiele für die Konfiguration der Logrotation auf beiden Plattformen. Auf iOS wird CocoaLumberjack verwendet, auf Android — Logback mit XML-Konfiguration.

kotlin
// Logback auf Android — Rotationskonfiguration in logback.xml
// Dateigröße 5MB, 3 Archivkopien
@file:Suppress("unused")

// In logback.xml:
// <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
//   <file>${DATA_DIR}/logs/app.log</file>
//   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
//     <fileNamePattern>app.%i.log.gz</fileNamePattern>
//     <minIndex>1</minIndex>
//     <maxIndex>3</maxIndex>
//   </rollingPolicy>
//   <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
//     <maxFileSize>5MB</maxFileSize>
//   </triggeringPolicy>
// </appender>

CocoaLumberjack auf iOS unterstützt nicht nur die größenbasierte Rotation, sondern auch das Löschen alter Logs nach Datum mit logFileManager.maximumLogFiles. Wird maximumLogFiles = 0 gesetzt, wird die Beschränkung aufgehoben — Logs sammeln sich unbegrenzt an, was für die Produktion gefährlich ist.

swift
// Benutzerdefinierte Rotation mit Prüfung des Gesamtvolumens
class SizeAwareLogger {
    let maxTotalSize: Int64 = 20 * 1024 * 1024

    func enforceQuota(at logDirectory: URL) {
        let files = (try? FileManager.default
            .contentsOfDirectory(
                at: logDirectory,
                includingPropertiesForKeys: [.fileSize]
            )) ?? []
        let total = files.reduce(0) {
            $0 + (try? $1.resourceValues(forKeys: [.fileSize])
                .fileSize).map(Int64.init) ?? 0
        }
        if total > maxTotalSize {
            // Älteste Datei löschen
            files.sorted { $0.path < $1.path }.first.map {
                try? FileManager.default.removeItem(at: $0)
            }
        }
    }
}

Überwachung und Warnmeldungen bei Rotation

Log Rotation ist nicht nur automatische Archivierung, sondern auch ein Indikator für die Systemgesundheit. Wenn Logs zu häufig rotiert werden (alle paar Minuten), ist dies ein Zeichen für übermäßige Protokollierung oder eine Fehlerprotokollschleife. Richten Sie Warnmeldungen zur Rotationshäufigkeit ein: mehr als 10 Rotationen pro Stunde sind ein Grund zur Überprüfung.

Überwachungssysteme (Prometheus, Grafana, Datadog) können Rotationsmetriken über Dateisystem-Exporteure verfolgen. Prometheus node_exporter liefert Metriken zur Dateigröße und Änderungszeit. Auf mobilen Geräten ist die Rotationsüberwachung normalerweise im SDK integriert: CocoaLumberjack protokolliert das Rotationsereignis über DDLog, und Logback sendet den Status über einen Appender.

Warnmeldungen: Wenn mehr Archive als erwartet vorhanden sind (der Rotationszähler hat das Limit überschritten) oder das gesamte Logvolumen das Kontingent überschritten hat, sollte das System den Administrator benachrichtigen. Für Server beträgt die Standardschwelle 80% der Partitionsgröße, für mobile Geräte — eine Warnung bei Überschreitung von 50 MB pro Anwendung.

Häufig gestellte Fragen

Welche Logdateigröße ist für die Rotation optimal?

Für Server — 100–500 MB, für mobile Anwendungen — 1–10 MB. Ein zu kleines Limit (unter 1 MB) verursacht häufige Rotation und unnötige E/A-Vorgänge. Ein zu großes Limit (über 500 MB) erhöht die Öffnungs- und Suchzeit in der Datei.

Wie viele Archivkopien von Logs sollten aufbewahrt werden?

Für die Produktion — mindestens 7 Tage (tägliche Rotation) oder 3–5 Archive (größenbasierte Rotation). Für Compliance-Anforderungen — 30–90 Tage, aber verwenden Sie einen separaten Speicher mit Komprimierung und Aufbewahrungsrichtlinie, nicht Rotation auf derselben Partition.

Wie funktioniert logrotate auf mobilen Geräten?

logrotate ist ein Linux-Dienstprogramm — es ist auf iOS und Android nicht verfügbar. Auf mobilen Geräten wird die Rotation durch Bibliotheken implementiert: CocoaLumberjack für iOS und Logback für Android. Sie benötigen keinen root-Zugriff und arbeiten in der Sandbox-Umgebung der Anwendung.

Was tun, wenn Logs jede Minute rotiert werden?

Überprüfen Sie auf zirkuläre Protokollierung — wenn die Fehlerbehandlung selbst einen neuen Fehler erzeugt. Fügen Sie Schutz hinzu: einen Zähler für wiederholte Protokollierungen desselben Typs mit einem Schwellenwert (nicht mehr als 100 identische Nachrichten pro Minute) und eine temporäre Sperre nach Überschreitung.

Müssen Logarchive komprimiert werden?

Nicht zwingend, aber empfohlen. gzip komprimiert Textlogs um das 10- bis 20-fache ohne Datenverlust. Auf mobilen Geräten reduziert die Komprimierung den Speicherplatz von 50 MB auf 3–5 MB. Der einzige Nachteil — das Archiv kann ohne Dekomprimierung nicht gelesen werden, aber für die Analyse wird normalerweise nur die aktuelle Datei benötigt.

Zusammenfassung

  • Log Rotation — automatische Logdateiverwaltung mit Erstellung neuer Dateien bei Erreichen eines Limits und Archivierung alter Dateien zur Vermeidung von Festplattenüberlauf
  • Drei Strategien — nach Dateigröße (am häufigsten), nach Zeit (für Dumps) und nach Dateianzahl (für mobile Geräte mit begrenztem Speicherplatz)
  • logrotate — Standard-Linux-Dienstprogramm für serverseitige Rotation mit flexiblen Parametern: daily, size, compress, rotate, postrotate-Skripte
  • Mobile Bibliotheken — CocoaLumberjack auf iOS und Logback auf Android unterstützen größenbasierte Rotation mit Komprimierung und Begrenzung der Archivanzahl
  • Festplattenkontingent — Gesamtlimit für alle Logs: 20 MB für mobile Anwendungen und 80% der Partition für Server mit Warnung bei Überschreitung
  • Überwachung — zu häufige Rotation (mehr als 10 Mal pro Stunde) signalisiert zirkuläre Fehlerprotokollierung oder übermäßiges Logvolumen
  • gzip-Komprimierung — reduziert die Archivgröße um das 10- bis 20-fache, für alle Plattformen empfohlen; delaycompress belässt das letzte Archiv für schnelles Lesen unkomprimiert

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