
Mac-Praxis: Wie macOS Log-Dateien füllt und pflegt


Was gibt es beim Neustart und während des laufenden Betriebs eines Macs zu berichten? Das kommt darauf an, wen man fragt. Entwickler auf der Suche nach Fehlerursachen benötigen einen umfassenden Datenfundus, während im Normalbetrieb der ständige Strom an Berichten über gelungene, misslungene und seltsam verlaufende Subprozesse eher ablenken, vielleicht sogar verstören würde. Seit macOS Sierra setzt macOS auf das Unified Log, und deren Funktionsweise haben Apples Entwickler nur dürftig dokumentiert. Howard Oakley hat sich genauer angesehen, welche Prozesse sich um das
Sammeln und Verwerfen von Protokollen kümmern – und nach welchen Regeln sie arbeiten.
Ursprung seiner Recherche war die Frage, wie macOS seit Catalina detailliert jeden Neustart protokolliert, obwohl das separate Daten-Volume erst durch die Anmeldung des Anwenders ermöglicht wird. Schaut ein Mac-Admin später nach, erscheinen sämtliche Logs trotzdem auf dem Daten-Volume. Oakley stellte fest, dass ein Hintergrundprozess namens logd_helper dafür zuständig ist: Dieser sammelt die aufgelaufenen Meldungen aus Arbeitsspeicher und Preboot-Volume, um sie der Protokolldatenbank hinzuzufügen. Die eigentlichen Meldungen erzeugt der Daemon logd.
Aufräumen nach GrößeAnstatt sämtliche Meldungen in Textdateien abzulegen, setzt das Unified Log auf ein Datenbankformat, das aus Dokumenten mit der Endung „tracev3“ besteht; diese finden sich in einer Ordnerstruktur unter /var/db/diagnostics. Der Dienst logd kümmert sich regelmäßig darum, dass Altbestände gelöscht werden. Dies erfolgt offenbar nach klaren Regeln: Im Ordner „Special“ sind die einzelnen Dateien nur wenige Kilobyte groß, während die Objekte im Ordner „Persist“ allesamt etwa 10,5 MByte groß sind. Die Anzahl der Dateien im Persist-Ordner liegt stets bei 50, die Gesamtgröße der Dateien deshalb bei circa 530 MByte. In den Ordnern „Special“ liegen laut Oakley hingegen Dateien in einer Größe von ungefähr zwei MByte. Insgesamt bleibt die Größe des diagnostics-Ordners bei ein bis zwei Gigabyte.
Unter /var/db/diagnostics legt macOS die Protokolldateien im Datenbankformat ab.
Oakleys Hilfsprogramme zur Log-AnalyseSeit der Einführung des Unified Log eignet sich das Programm „Konsole“ nicht mehr, um nachträglich sämtliche Protokolldateien zu durchforsten. Man muss zunächst die App öffnen und auf „Start“ klicken, damit Protokolle im vollen Umfang hier erscheinen. Oakley hat ein kostenloses Hilfsprogramm namens
LogUI entwickelt, welches Einsicht in den Protokollbestand gewährt. Zusätzlich hat er jüngst eine App namens
Logstitician veröffentlicht, welche die in macOS integrierte Statistik des Unified Log visualisiert (nachdem man deren jsonl-Dateien an einen anderen Ort kopiert und diese mittels Logstitician geöffnet hat).
Howard Oakleys Logstitican visualisiert, woher die meisten Fehlermeldungen in der Vergangenheit stammten.