18

以前は、Console.app 内のアプリケーションからすべての stdout/stderr データを読み取ることができました。しばらくして、これはもう当てはまりません (ただし、NSLog データはまだ存在します)。今は10.8です。

2010年から以前の同様の質問がありましたが、これはもはや最新ではないようです。

SU には、まだ回答されていない同様の質問もあります。

それは変更されましたか、つまり、stdout はログに記録されなくなりましたか? それとも、私のシステムで何かが壊れていますか (古い SU の質問から、そのように聞こえましたが、役に立ちませんでした)?

どうにかして元に戻すことはできますか?

4

2 に答える 2

19

Mountain Lion より前はlaunchd、通常のアプリケーションを含め、 によって管理されるすべてのプロセスの stdout および stderr ファイル記述子がシステム ログに転送されていました。Mountain Lion 以降では、stdout と stderr はlaunchdマネージド アプリケーションではどこにも行きません。システムログに明示的に送信されたメッセージのみがそこに残ります。

syslog(3)アプリケーションを作成していて、出力をコンソールに表示したい場合は、またはasl(3)代わりに構築された API を採用してください。NSLogはそのような API の 1 つであり、標準エラー出力にもログを記録できるという利点があるため、アプリケーションをどのように起動したかに関係なく、出力を簡単に確認できます。その機能が必要であるがaslorsyslogを直接使用したい場合は、ASL_OPT_STDERRオプション toasl_openLOG_PERRORオプション to をopenlogそれぞれ調べる必要があります。

于 2013-03-27T09:29:50.937 に答える