如何将stdout导入Console.app

Alb*_*ert 16 macos stdout

之前,我可以从Console.app中的应用程序读取所有stdout/stderr数据.一段时间以来,情况已经不是这样了(尽管NSLog数据仍然存在).我现在在10.8.

从2010年开始有一个类似的问题似乎不再是最新的了.

在SU上,还有一个类似的问题尚未得到解答.

有没有被改变,即stdout不应该再被记录?或者在我的系统中出现了什么问题(从旧的SU问题来看,听起来可能就是这样 - 尽管没有帮助)?

我可以以某种方式改变它吗?

bda*_*ash 16

在Mountain Lion之前,所有由其管理的进程(launchd包括常规应用程序)都将其stdout和stderr文件描述符转发到系统日志.在Mountain Lion及以上版本中,stdout和stderr无法用于launchd托管应用程序.只有明确发送到系统日志的消息才会结束.

如果您正在编写应用程序并希望在控制台中显示某些输出,那么请采用内置syslog(3)asl(3)替代的API .NSLog是一个这样的API,它具有登录到stderr的优势,因此无论您如何启动应用程序,都可以轻松查看输出.如果您想这个功能,但希望使用aslsyslog直接,那么你会想在看的ASL_OPT_STDERR选项asl_open,以及LOG_PERROR选项openlog分别.

  • 我没有任何真正的参考,但您可以通过查看[launchd source releases](http://opensource.apple.com/source/launchd/)来确认更改.您可以看到在launchd-442.21中不再存在OS X 10.7.5的launchd-392.39中存在的对"log_redirect_fd"和"job_log_stdouterr"的引用.这是负责读取应用程序的stderr和stdout描述符并将其输出转发到系统日志的逻辑. (3认同)