Mac & i 5/2017
S. 134
Hintergrund
macOS-Konsole
Aufmacherbild

macOS intern

Teil 5: Wie die Konsole funktioniert – und was sie bringt

macOS führt über fast jede Aktion und jedes Problem in Form von Protokollmeldungen Buch. Die Ausgaben von Apples App Konsole und dem log-Befehl im Terminal können jedoch nicht nur Admins und Entwickler auswerten, sondern auch fortgeschrittene Anwender – wenn sie ein paar Dinge beachten.

Unter dem Begriff Logging versteht man allgemein das Aufzeichnen und Mitschreiben von Aktionen. Einzelne Anwendungen können so etwa belegen, dass bestimmte Schritte oder Transaktionen ausgeführt wurden – oder auch nicht. Das ist nicht nur bei Geschäftsanwendungen wie Datenbanken wichtig, um im Ernstfall nachvollziehen zu können, wer welche Änderungen gemacht hat. Es hilft auch Privatanwendern bei der Fehlersuche. Was trivial anmutet, ist auf Systemebene gar nicht so simpel: Bei mehreren hundert gleichzeitig laufenden Prozessen kommen innerhalb kurzer Zeit Tausende von Nachrichten zusammen, die in eine sinnvolle Struktur gebracht werden müssen. Hinzu kommt, dass diese Protokollaktivitäten das System nicht komplett ausbremsen sollen, jeder Vorgang benötigt schließlich Ressourcen in Form von Rechenzeit und eventuell auch Dateisystem- und Speicherzugriffen. Das übernimmt in älteren Sytemen ASL (siehe Kasten), macOS Sierra hat Apple ein komplett neues Logging-System spendiert.

Das sogenannte „Unified Logging“ arbeitet sowohl unter macOS als auch unter iOS ab 10.0, tvOS ab 10.0 und watchOS ab 3.0. Mit os_log (aus dem os-Framework) gibt es nur noch eine offizielle API, die unter Objective-C, C++ und Swift zur Verfügung steht. Passend dazu ist unter Sierra mit logd ein neuer Daemon aufgetaucht – das Pendant zu syslogd. Die Architektur des Systems ist laut Apple so ausgelegt, dass das Logging mit minimaler Belastung des Systems zur Laufzeit erfolgen kann. Alle aufwendigen Vorgänge werden auf den Zeitpunkt der Ausgabe verlagert und beeinflussen die loggenden Prozesse nicht. Die alten (Programmier-)Schnittstellen ASL-API, syslog und NSLog existieren weiterhin.