Jawaban:
Saya menemukan solusinya
sudo launchctl log level debug
dan setelah ini
tail -f /var/log/system.log
Dengan asumsi Anda mencoba untuk log proses Anda daripada launchd itu sendiri, jika Anda memasukkan baris berikut dalam file plist launchd:
<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>
dan memuat kembali prosesnya, setiap pencatatan atau pencetakan yang Anda miliki di dalam skrip Anda akan ditangkap dalam salah satu dari dua file itu setiap kali dijalankan. meskipun memutar file tampaknya terserah Anda. seperti yang Anda harapkan, jika Anda menggunakan file yang sama di kedua contoh, itu akan mencatat kesalahan dan stdout ke tempat yang sama.
Lihat: bagian Debugging launchd Jobs di Creating Launch Daemon dan Agents .
Pada OS X 10.11 (El Capitan), Anda dapat menggunakan sudo launchctl debug <service-target> --stdout --stderruntuk mengaktifkan pencatatan sekali saja, jika Anda tidak ingin mengambil opsi sistem file yang disarankan oleh @peter.
Banyak hal berbeda dalam implementasi saat ini launchctl, dan <service-target>agak aneh. Misalnya, saya memiliki layanan lokal yang saya konfigurasikan ~/Library/LaunchAgents/dev.localmon.plist, yang memiliki "label" dev.localmon. Its <service-target>adalah gui/$UID/dev.localmon, di mana $UIDadalah ID pengguna Anda, yang, karena Anda menjalankan ini pada CLI, shell Anda akan interpolasi untuk Anda.
Jadi seandainya dev.localmonlayanan saya mogok pada saat startup (itu), saya bisa memanggil yang berikut untuk launchctlmenyalurkan stdout proses dan stderr ke shell saya waktu berikutnya (dan hanya waktu berikutnya) layanan dimulai:
sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr
Karena itu tergantung pada TTY yang terbuka dan siap, buka terminal lain dan jalankan:
launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation
Kemudian, kembali di terminal pertama, Anda akan melihat hasilnya. (Anehnya, itu tidak menutup ketika proses layanan mati, jadi Anda harus Ctrl-C.)
Btw, setelah Anda memperbaiki file konfigurasi Anda dengan PATH atau lingkungan apa pun yang melanggar layanan sebelumnya, Anda masih harus menggunakan launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plistdua langkah lama karena uncachesubkomand dokumen yang diakui memiliki efek sebagai berikut:
Perintah belum diimplementasikan.
Yay untuk strategi rilis pasca-Pekerjaan Apple: "Bergerak cepat dan hancurkan sesuatu"
sudo launchctl debugkeluar Could not find domain forbersamaku