2012-10-27 11 views
16

Daha önce, tüm stdout/stderr verilerini Console.app'deki uygulamalardan okuyabiliyordum. Bir süredir, artık bu durum böyle değil (NSLog verileri hala var, yine de). Şimdi 10.8 yaşıyorum.Console.app içine stdout nasıl alınır

Artık güncel görünmeyen bir earlier similar question from 2010 vardı. SU'da, henüz yanıtlanmayan bir similar question da bulunmaktadır.

Bu değişiklik oldu mu, yani stdout'un artık günlüğe kaydedilmemesi gerekiyor mu? Ya da sistemimde bir sorun var (eski SU sorusundan, böyle bir durumda da işe yarayabilirdi - yardımcı olmaksızın)?

Bir şekilde onu değiştirebilir miyim?

cevap

15

Mountain Lion'dan önce, düzenli uygulamalar dahil olmak üzere launchd tarafından yönetilen tüm işlemler, stdout ve stderr dosya tanımlayıcılarının sistem günlüğüne iletildi. Mountain Lion ve yukarda, stdout ve stderr, launchd yönetilen uygulamalar için hiçbir yere gitmiyor. Sadece sistem günlüğüne açıkça gönderilen iletiler burada bitecek.

Bir uygulama yazıyorsanız ve konsolda bazı çıktıların görüntülenmesini istiyorsanız, syslog(3) veya asl(3) yerine bir API kullanın. NSLog, böyle bir API'dır ve stderr'e giriş yapma avantajına sahiptir, böylece uygulamanızı nasıl başlattığınıza bakılmaksızın çıktınızı kolayca görebilirsiniz. Bu işlevselliği beğenirsiniz ancak asl veya syslog modellerini kullanmak isterseniz, seçeneğini asl_open ve LOG_PERROR seçeneklerine openlog olarak bakmak isteyeceksiniz.

+0

Bu davranışın 'launchd'de değiştiğine ve neden değiştiğine dair referansınız var mı? – Albert

+3

Herhangi bir gerçek referansım yok, ancak değişikliği [launchd kaynak sürümleri] 'ne (http://opensource.apple.com/source/launchd/) bakarak onaylayabilirsiniz. OS X 10.7.5'ün launchd-392.39'unda bulunan 'log_redirect_fd' ve' job_log_stdouterr 'referanslarının launchd-442.21'de artık mevcut olmadığını görebilirsiniz. Bu, uygulamanın stderr ve stdout tanımlayıcılarını okumaktan ve çıktılarını sistem günlüğüne iletmekten sorumlu olan mantıktı. – bdash

3

Eski bir uygulamanız varsa ve stdout veya stderr'i görmek istiyorsanız, uygulamayı Terminal'den açın. Normal ve eski dünyada olduğu gibi, yürütülebilir dosyaya gidip komut satırından açabilirsiniz: programın adını yazın. Ardından mesajlar terminalde görünecektir.

Bu, diğer, daha iyi önerilerden herhangi birinin reddedilmesi değildir. Çıktının (eski) programı değiştirmeden almanın bir yolu.