Console.app ist eine integrierte macOS-Anwendung zum Anzeigen, Filtern und Analysieren von System- und Benutzerlogs. Es zeigt Nachrichten aus dem einheitlichen Apple-Logging-System (os_log) in Echtzeit an und ermöglicht Entwicklern, Abstürze, Fehler und Debug-Meldungen ohne Verbindung zu Xcode zu sehen. Laut Apple Support unterstützt Console.app das Filtern nach Subsystem, Kategorie, Kritikalitätsstufe und Prozess sowie den Export von Logs in .logarchive zur Weitergabe an einen Entwickler. Es ist ein unverzichtbares Werkzeug zur Diagnose von Problemen auf dem Mac: Filter und gespeicherte Suchen ermöglichen es, Anwendungsfehler schnell unter Tausenden von Systemmeldungen zu finden.
Wichtige Punkte
Console.app ist eine grafische Oberfläche für das einheitliche Apple-Logging-System. Es hat die alte Console-Anwendung (als Teil von macOS) ersetzt und bietet Zugriff auf alle System- und Anwendungslogs, die über die APIs os_log, os_trace und syslog geschrieben wurden. Console.app befindet sich auf jedem Mac in /Applications/Utilities/.
Im Gegensatz zu Xcode, das nur Logs der aus der IDE gestarteten Anwendung anzeigt, zeigt Console.app gleichzeitig Logs aller Prozesse auf dem System an. Dies ermöglicht die Diagnose von Problemen, die nur auftreten, wenn die Anwendung außerhalb von Xcode oder im Hintergrund gestartet wird. Console.app zeigt auch Systemlogs an — Kernel, launchd, WindowServer — was für das Debuggen von Low-Level-Problemen nützlich ist.
Console.app erfordert keine Installation zusätzlicher Tools oder eine Internetverbindung. Alle Daten werden lokal in einer .tracev3-Datenbank gespeichert, und die Anwendung arbeitet vollständig offline. Um Logs von einem anderen Mac oder iOS-Gerät anzuzeigen, verwenden Sie den Befehl log collect und öffnen Sie dann die .logarchive in Console.app.
Die Console.app-Oberfläche besteht aus drei Hauptbereichen: der Seitenleiste mit Filtern, der Nachrichtentabelle und dem Detailbereich für die ausgewählte Nachricht. Die Seitenleiste enthält die Bereiche Devices (verfügbare Logquellen), Reports (Systemabsturzberichte) und Saved Searches (gespeicherte Suchanfragen).
Die Nachrichtentabelle zeigt eine Liste der Logs mit Spalten: Time (Zeitstempel), Category (Kategorie), Level (Kritikalitätsstufe — farbcodiert), Process (Prozessname), Message (Nachrichtentext). Ein Klick auf eine Nachricht öffnet den Detailbereich mit Subsystem, Aktivitätskennung, Thread-ID und dem vollständigen formatierten Text.
Console.app hebt Nachrichten farblich hervor: rot für Fault, gelb für Error, blau für Debug, grau für Info. Default-Nachrichten werden nicht hervorgehoben. So können Sie den Log-Stream visuell scannen und kritische Ereignisse sofort erkennen.
// Logs, die in Console.app erscheinen
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Diese Nachrichten sind in Console.app mit dem Filter „myapp“ sichtbar
Die Filterung ist die Hauptfunktion von Console.app, die einen Strom von Tausenden von Nachrichten pro Sekunde in eine lesbare Liste verwandelt. Das Suchfeld oben unterstützt UND-Bedingungen: mehrere durch Leerzeichen getrennte Wörter zeigen nur Nachrichten an, die alle Wörter enthalten. Zum Beispiel zeigt myapp error alle Logs der Anwendung myapp mit der Stufe Error.
Subsystem-Filter in der Seitenleiste ermöglicht die Auswahl eines oder mehrerer Subsysteme. Dies ist der schnellste Weg, um die Logs einer bestimmten Anwendung von Systemmeldungen zu isolieren. Kategorie-Filter ist nach Auswahl eines Subsystems verfügbar — er zeigt alle vom ausgewählten Programm verwendeten Kategorien an. Level-Filter schränkt Nachrichten nach Kritikalitätsstufe ein: es können nur Fehler oder nur Debug-Meldungen angezeigt werden.
| Filtertyp | Beispiel | Ergebnis |
|---|---|---|
| Text | crash payment | Nachrichten, die sowohl crash als auch payment enthalten |
| Subsystem | com.example.myapp | Nur Logs der angegebenen Anwendung |
| Level | Error + Fault | Nur Fehler und kritische Ausfälle |
| Category | network | Nachrichten mit der Kategorie network |
| Zeit | Letzte 1 Stunde | Nur Nachrichten aus dem gewählten Intervall |
Das Suchfeld von Console.app unterstützt Regex über die Konstruktion REGEX:pattern. Beispiel: REGEX:error.*tim(e|out) findet alle Nachrichten, die „error“ und ein Wort enthalten, das mit „tim“ beginnt und mit „e“ oder „out“ endet. Regex funktioniert nur im Suchfeld, nicht in Subsystem- oder Kategorie-Filtern.
Live ist der Echtzeitmodus, in dem Console.app neue Nachrichten anzeigt, sobald sie im Kernel-Ringpuffer erscheinen. Dieser Modus ist standardmäßig aktiv und geeignet zum Debuggen einer laufenden Anwendung: Sie starten die App und sehen ihre Logs mit einer Verzögerung von 1–5 Sekunden. Die Live-Taste (oder ⌘L) schaltet den Stream ein und aus.
Historical ist der Archivansichtsmodus. Console.app speichert alle Nachrichten der letzten 7–14 Tage (im System konfigurierbar) in einer .tracev3-Datenbank. Der Historical-Modus öffnet dieses Archiv und ermöglicht die Suche darin mit beliebigen Filtern, nicht nur im aktuellen Stream. Dies ist unverzichtbar für die Analyse von Problemen, die nachts aufgetreten sind oder wenn die Anwendung ohne Verbindung zu einem Mac lief.
Das Umschalten zwischen den Modi erfolgt über die Live-Taste in der Symbolleiste. Wenn Live ausgeschaltet ist, zeigt Console.app historische Daten an. In diesem Modus können Sie mit dem Kalender oder den ← →-Tasten durch die Zeitleiste navigieren. Historische Daten sind nur für Logs verfügbar, die auf der Festplatte gespeichert wurden — Nachrichten, die im Ringpuffer überschrieben wurden, erscheinen nicht im Archiv.
Console.app unterstützt den Export gefilterter Logs in mehreren Formaten. File → Export → Save ermöglicht die Auswahl des Formats: .logarchive (Apple-natives Format, enthält alle Metadaten), .txt (Klartext mit Spalten) und .json (strukturierte Daten mit Feldern). Für das Anhängen an einen Bug-Report verwenden Sie .logarchive — es kann auf jedem Mac in Console.app geöffnet werden.
Export von einem iOS-Gerät: über Xcode (Devices → Open Console) oder über den Befehl log collect --device --output ./archive.logarchive im Terminal. Öffnen Sie die resultierende .logarchive in Console.app auf einem Mac — die Logs stammen vom entfernten Gerät, aber Filter und Suche funktionieren genauso wie bei lokalen Logs.
// Export von iOS-Gerätelogs über das Terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Beispiel: Logs der letzten Stunde exportieren
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Parsen exportierter Logs in Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive ist das optimale Format zum Senden an einen Kollegen oder zum Anhängen an ein JIRA-Ticket. Die Datei enthält nicht nur Nachrichten, sondern auch Subsystem, Kategorie, Zeitstempel, Thread-IDs und alle Metadaten. Die Archivgröße ist dank .tracev3-Komprimierung deutlich kleiner als Rohdaten. Stellen Sie vor dem Senden sicher, dass die Logs keine privaten Daten enthalten: Verwenden Sie einen Filter nach dem Subsystem Ihrer Anwendung, um Systemlogs auszuschließen, die vertrauliche Informationen anderer Prozesse enthalten könnten.
Absturzdiagnose ohne Xcode: Wenn eine Anwendung beim Start außerhalb von Xcode abstürzt, zeigt Console.app eine Fault-Meldung vom Prozess an. Suchen Sie in der Seitenleiste Reports → Crash Reports — dort werden vollständige Absturzberichte mit Signatur und Stack angezeigt. Verwenden Sie den Subsystem-Filter für Ihre Anwendung und setzen Sie die Stufe auf Error+Fault, um alle kritischen Ereignisse vor dem Absturz zu sehen.
Console.app ermöglicht es, Verzögerungen in der Anwendung anhand von Zeitstempeln zu verfolgen. Wenn zwischen zwei zusammenhängenden Nachrichten (z. B. „Anfrage gesendet“ und „Antwort erhalten“) mehr Zeit als erwartet vergangen ist, ist dies ein Signal für ein Leistungsproblem. Ein Filter auf das Subsystem Ihrer Anwendung mit der Stufe Default zeigt alle wichtigen Ereignisse mit Millisekundengenauigkeit an.
Speicherlecks finden: Bei einem Speicherleck sendet das System eine Speicherwarnung über os_log mit der Kategorie memory und der Stufe Error. Filtern Sie in Console.app nach dem Wort memory und wählen Sie Ihr Subsystem aus. Wenn die Warnung alle 5–10 Sekunden wiederholt wird, verbraucht die Anwendung aktiv Speicher. Sie können auch Debug-Logs aktivieren, um Speicherzuweisungen zu verfolgen.
Debuggen von Netzwerkanfragen: Wenn Ihre Anwendung os_log für Netzwerkereignisse verwendet, zeigt Console.app alle Anfragen und Antworten mit Zeitangaben an. Ein category=network-Filter reduziert das Rauschen. Wenn die Zeit zwischen einer Anfrage und der Antwort die Erwartungen übersteigt, suchen Sie nach Nachrichten mit level=Error — sie weisen auf Timeouts oder DNS-Fehler hin.
// Struktur zum Parsen von Console.app JSON-Logs
struct LogEntry: Codable {
let timestamp: String
let eventMessage: String
let subsystem: String
let category: String
let messageType: UInt8
var level: String {
switch messageType {
case 1: return "Fault"
case 16: return "Error"
case 17: return "Debug"
default: return "Default"
}
}
}
Häufig gestellte Fragen
Console.app befindet sich im Ordner /Applications/Utilities/. Sie können es über Spotlight (⌘Leertaste → Console) oder über Finder → Programme → Dienstprogramme → Console öffnen. Das App-Symbol ist eine stilisierte Sprechblase mit einem Zahnrad.
os_log maskiert Zeichenfolgen und Objekte standardmäßig als private. Console.app zeigt sie im Produktionsmodus als <private> an. Um die tatsächlichen Werte zu sehen, starten Sie die Anwendung aus Xcode oder aktivieren Sie ein Sammlungsprofil mit der Stufe Debug für Ihr Subsystem.
Wählen Sie in der Seitenleiste von Console.app Ihr Subsystem (com.example.app) im Abschnitt Devices → Ihr Gerät → Processes. Alternativ geben Sie den Prozessnamen in das Suchfeld ein und wählen Sie Process: YourApp aus der Dropdown-Liste.
Standardmäßig speichert macOS Logs in .tracev3 für 7–14 Tage, abhängig vom verfügbaren Speicherplatz. Bei Speichermangel werden die ältesten Logs automatisch gelöscht. Die Aufbewahrungsdauer kann über sudo log config verlängert werden, wird aber für Produktionsmaschinen nicht empfohlen.
Ja, verbinden Sie Ihr iOS-Gerät über USB mit einem Mac, öffnen Sie Xcode → Devices → wählen Sie das Gerät aus → Open Console. Console.app zeigt die Logs des verbundenen Geräts in Echtzeit an. Für die Offline-Erfassung verwenden Sie log collect im Terminal mit dem Flag --device.
Zusammenfassung
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.
Lesen Sie auch