Frage Wie aktiviere ich die Launchd Logging unter OS X?


Wie aktiviere ich die Launchd Logging unter OS X 10.6?

Ich habe einen neuen Daemon hinzugefügt, der nicht richtig startet (Status ist 1).

Ich möchte das Problem beheben, aber ich konnte es nicht finden launchd Protokolle, sie sind nicht drin /var/log/launchd.log.


28
2017-09-22 13:38


Ursprung




Antworten:


Ich habe die Lösung gefunden

 sudo launchctl log level debug 

und danach

 tail -f /var/log/system.log

24
2017-09-22 13:47



Ich habe erkannt, dass dieses Betriebssystem wie jeder andere auch Admin benötigt. War total auf der Suche nach einem Tag des Schreiens "WTF, wo ist die ausführliche Flagge!" OSX rockt sicher, aber knifflig, um es in den Griff zu bekommen. Thx +1 - chiggsy
Follow-up, zur Info: Dies funktioniert auch mit OS X 10.7.2. Vielen Dank. - Alan W. Smith
Ich hatte Probleme mit meinen Leopard-Servern und dachte, dass etwas mit meinem Launchd-Plist nicht stimmt (obwohl das gleiche Programm in Snow Leopard funktioniert). Ich stolperte zufällig darauf und es funktioniert wie Charme :) - icasimpan
Dies funktioniert seit 10.10 Yosemite nicht mehr. launchctl Version: Darwin System Bootstrapper 2.0.0: Di 9. September 16:30:56 PDT 2014 - JeanMertz
@JeanMertz - jede Alternative? - Umang


Angenommen, Sie versuchen, Ihren Prozess zu protokollieren, anstatt ihn selbst zu starten, Wenn Sie die folgenden Zeilen in die Launchd-Plist-Datei einfügen:

<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>

und laden Sie den Prozess neu. Protokollierung oder Druck, die Sie intern in Ihrem Skript haben, werden bei jeder Ausführung in einer dieser beiden Dateien erfasst. obwohl das Drehen der Dateien Ihnen überlassen ist. Wie Sie vielleicht erwarten, wenn Sie die gleiche Datei in beiden Fällen verwenden, werden Fehler und Stdout an derselben Stelle protokolliert.

Sehen: Debuggen von Launched-Jobs im Abschnitt Erstellen von Startdämonen und -agenten.


15
2018-06-11 21:16





Unter OS X 10.11 (El Capitan) können Sie verwenden sudo launchctl debug <service-target> --stdout --stderr Aktivieren Sie die einmalige Protokollierung, wenn Sie die von @peter vorgeschlagene Dateisystemoption nicht verwenden möchten.

Viele Dinge sind anders in der aktuellen Umsetzung von launchctl, und das <service-target> ist irgendwie komisch. Angenommen, ich habe einen lokalen Dienst, für den ich konfiguriert habe ~/Library/LaunchAgents/dev.localmon.plist, die das "Label" hat dev.localmon. Es ist <service-target> ist gui/$UID/dev.localmon, woher $UID ist Ihre Benutzer-ID. Da Sie dies auf der CLI ausführen, interpoliert Ihre Shell für Sie.

Also meine Annahme dev.localmon Service stürzte beim Start ab (; war es), ich könnte folgendes anrufen um zu haben launchctl pipe die stdout und stderr des Prozesses in meine Shell das nächste Mal (und nur das nächste Mal) der Dienst startet:

sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr

Da dies bei den TTYs mit offenen und betriebsbereiten Daten der Fall ist, gehen Sie zu einem anderen Terminal und führen Sie Folgendes aus:

launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation

Dann, zurück in das erste Terminal, du sollte Siehe die Ausgabe. (Seltsamerweise schließt es nicht, wenn der Service-Prozess abbricht, also müssen Sie Strg-C drücken.)

Wenn Sie Ihre Konfigurationsdatei mit PATH oder der Umgebung, in der der Dienst zuvor unterbrochen wurde, reparieren, müssen Sie immer noch die alte verwenden launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist zwei Schritte seit der Dokumentation behauptet uncache Unterbefehl hat folgenden Effekt:

Befehl ist noch nicht implementiert.

Yay für Apples Post-Jobs-Release-Strategie: "Move schnell und Dinge zu brechen"


12
2017-09-14 23:06