Logging für Swift (iOS/macOS): Die besten Bibliotheken und Lösungen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Logging für Swift (iOS/macOS): Die besten Lösungen



Logging ist eines der wichtigsten Werkzeuge für Entwickler von iOS- und macOS-Apps. Es hilft, die Codeausführung zu verfolgen, Fehler zu finden, das Benutzerverhalten zu analysieren und Probleme in der Produktion zu diagnostizieren. Im Swift-Ökosystem gibt es zahlreiche Bibliotheken und Ansätze zur Organisation des Loggings. In diesem Artikel betrachten wir die besten davon, ihre Vorteile und Anwendungsbeispiele.



Warum ist Logging in Swift wichtig?

Hochwertiges Logging ermöglicht:

  • Verfolgung des Ausführungsflusses und des Zustands von Variablen
  • Erfassung von Fehlern und Ausnahmen mit Kontext
  • Analyse der Leistung und von Engpässen
  • Sammeln von Daten für das Debugging in der Produktion (über entfernte Dienste)
  • Vereinfachung der Teamarbeit und des Code-Reviews


Integrierte Lösung: OSLog (os_log)

Seit iOS 10 / macOS 10.12 bietet Apple das leistungsstarke Framework os_log. Es ist systemintegriert, unterstützt Kategorien, Prioritätsstufen und dynamische Filterung in der Xcode-Konsole und der App „Console“.

import os.log

let logger = OSLog(subsystem: "com.yourapp.networking", category: "APIClient")os_log("Anfrage an Server: %{public}@", log: logger, type: .info, urlString)

// Stufen: .debug, .info, .default, .error, .faultos_log("Authentifizierungsfehler: %{public}@", log: logger, type: .error, errorMessage)

Vorteile: keine Abhängigkeiten, hohe Leistung, Apple-Unterstützung. Nachteile: eingeschränkte Anpassung der Ausgabe, schwierige Integration mit Cloud-Diensten.



Beste Drittanbieter-Bibliothek: CocoaLumberjack

CocoaLumberjack ist der De-facto-Standard für Logging in Swift und Objective-C. Es ist um ein Vielfaches schneller als NSLog, unterstützt asynchrones Schreiben, Dateirotation, mehrere Logger gleichzeitig und Formatierung.

import CocoaLumberjack

// KonfigurationDDLog.add(DDOSLogger.sharedInstance) // Konsolelet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // 24 StundenDDLog.add(fileLogger)

// VerwendungDDLogDebug("Debug: \\(someValue)")DDLogInfo("Info: Benutzer hat sich angemeldet")DDLogWarn("Warnung: Niedriger Akkustand")DDLogError("Fehler: Daten konnten nicht geladen werden")

Die Bibliothek wird aktiv gepflegt, hat eine große Community und lässt sich leicht an jede Anforderung anpassen.



SwiftyBeaver: Schöne Ausgabe und Cloud-Analyse

SwiftyBeaver ist eine beliebte Lösung mit farbiger Konsolenausgabe, Unterstützung für das JSON-Format und einem integrierten Cloud-Dienst für Echtzeit-Log-Erfassung.

import SwiftyBeaver

let log = SwiftyBeaver.self

// Konsolen-Destination hinzufügenlet console = ConsoleDestination()log.addDestination(console)

// Optional: Cloud-Dienstlet cloud = SBPlatformDestination(appID: "yourAppID", appSecret: "secret", encryptionKey: "key")log.addDestination(cloud)

log.verbose("App gestartet")log.debug("Parameter: \\(params)")log.info("Benutzer hat Schaltfläche gedrückt")log.warning("Verbindungstimeout")log.error("Kritischer Fehler: \\(error)")

SwiftyBeaver eignet sich hervorragend für kleine und mittlere Projekte, bei denen visueller Komfort während der Entwicklung wichtig ist.



XCGLogger: Flexibilität und Einfachheit

XCGLogger ist eine leichtgewichtige Bibliothek mit umfangreichen Formatierungs-, Filter- und Tagging-Möglichkeiten. Sie unterstützt die Ausgabe in Dateien, die Konsole und benutzerdefinierte Destinationen.

import XCGLogger

let log = XCGLogger.defaultlog.setup(level: .debug, showLogIdentifier: true, showFunctionName: true, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true)

log.debug("Debug")log.info("Info")log.error("Fehler")

Einfache Konfiguration und eine verständliche API machen

Empfehlungen