Swift:
Protokollierung

Wie geht das:

In Swift können Sie Logs mit print-Anweisungen oder der flexibleren os.log-API in die Konsole schreiben, welche sich in das Unified Logging System auf Apple-Plattformen einklinkt.

import os.log

let logger = OSLog(subsystem: "com.yourapp.domain", category: "network")

func fetchData() {
    // Einfache Print-Anweisung
    print("Fetch gestartet")
    
    // Loggen eines Info-Level-Ereignisses mit os.log
    os_log(.info, log: logger, "Daten werden von API abgerufen.")
    
    do {
        let data = try performNetworkRequest()
        // Loggen eines Debug-Level-Ereignisses
        os_log(.debug, log: logger, "Daten empfangen: %@", data.description)
    } catch {
        // Loggen eines Error-Level-Ereignisses
        os_log(.error, log: logger, "Datenabruf fehlgeschlagen: %@", error.localizedDescription)
    }
}

func performNetworkRequest() throws -> Data {
    // Simulation eines Netzwerkaufrufs
    return Data()
}

Eine beispielhafte Ausgabe in der Konsole könnte so aussehen:

Fetch gestartet
Daten werden von API abgerufen.
Daten empfangen: Einige Datenbytes...

Bei Fehlern könnte sie so aussehen:

Datenabruf fehlgeschlagen: Die Internetverbindung scheint offline zu sein.

Vertiefung

Das Loggen in Swift gewinnt mit dem Unified Logging System, das in iOS 10 und macOS Sierra eingeführt wurde, an neuer Kraft und Effizienz. Anders als die print-Anweisung, die direkt zur Konsole geht, ist dieses System aktivitätsbasiert und erlaubt Ihnen, Log-Nachrichten auf der Grundlage ihrer Wichtigkeit und ob sie Debug- oder Release-Builds sind, zu filtern.

Der historische Kontext rahmt die Evolution des Loggens in iOS und macOS von rudimentären Print-Anweisungen hin zu umfassenden Werkzeugen, die sich in die Apps “Instruments” und “Konsole” integrieren, und bieten ausgefeilte Wege zur Analyse der Logs.

Es gibt eine Reihe von Alternativen zum Loggen innerhalb von Swift, wie zum Beispiel Drittanbieter-Bibliotheken wie CocoaLumberjack, die eine Makroschicht über dem Unified Logging System bietet. Es ermöglicht eine verbesserte Kontrolle über Log-Formatierung, Dateiverwaltung und Leistungsoptionen.

Zuletzt zu den Implementierungsdetails; OSLog ist so konzipiert, dass es nicht nur effizient, sondern auch datenschutzbewusst ist, mit der Fähigkeit, private Daten beim Loggen zu verschleiern. Es kategorisiert Logs in Fehler-, Fehler-, Info- und Debug-Level, die jeweils eine unterschiedliche Detailgenauigkeit für die Fehlersuche bieten.

Siehe auch