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 --stderr
untuk 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 $UID
adalah ID pengguna Anda, yang, karena Anda menjalankan ini pada CLI, shell Anda akan interpolasi untuk Anda.
Jadi seandainya dev.localmon
layanan saya mogok pada saat startup (itu), saya bisa memanggil yang berikut untuk launchctl
menyalurkan 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.plist
dua langkah lama karena uncache
subkomand dokumen yang diakui memiliki efek sebagai berikut:
Perintah belum diimplementasikan.
Yay untuk strategi rilis pasca-Pekerjaan Apple: "Bergerak cepat dan hancurkan sesuatu"
sudo launchctl debug
keluar Could not find domain for
bersamaku