如何将stdout导入Console.app

时间:2012-10-27 22:05:38

标签: macos stdout

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

有一个earlier similar question from 2010似乎不再是最新版了。

在SU上,还有一个尚未回答的similar question

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

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

2 个答案:

答案 0 :(得分:16)

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

如果您正在编写应用程序并希望在控制台中显示某些输出,请采用基于syslog(3)asl(3)构建的API。 NSLog就是这样一个API,它具有登录到stderr的优势,因此无论您如何启动应用程序,都可以轻松查看输出。如果您希望使用该功能但希望直接使用aslsyslog,那么您需要查看ASL_OPT_STDERR的{​​{1}}选项和{{{分别为asl_open的1}}选项。

答案 1 :(得分:3)

如果您有一个旧应用并希望看到stdout或stderr,请从终端打开该应用。您可以使用可执行文件并从命令行打开它,就像在普通的旧世界中一样:键入程序名称。然后消息将显示在终端上。

这不是对任何其他更好的建议的否定。这只是一种在不改变(旧)程序的情况下获得输出的方法。