如何在应用程序的运行时获得控制台读数?

出于debugging的目的,我想在运行时访问控制台打印输出,类似于App Store上当前的控制台应用程序(可以在这里find)。

我search了一些文档,找不到苹果公司提供的任何东西,但是我觉得我错过了一些重要的东西。 任何见解?

谢谢。

你可以使用<asl.h> 。 这是一个例子,我扔在一起创build一个控制台消息数组。

 -(NSArray*)console { NSMutableArray *consoleLog = [NSMutableArray array]; aslclient client = asl_open(NULL, NULL, ASL_OPT_STDERR); aslmsg query = asl_new(ASL_TYPE_QUERY); asl_set_query(query, ASL_KEY_MSG, NULL, ASL_QUERY_OP_NOT_EQUAL); aslresponse response = asl_search(client, query); asl_free(query); aslmsg message; while((message = asl_next(response)) != NULL) { const char *msg = asl_get(message, ASL_KEY_MSG); [consoleLog addObject:[NSString stringWithCString:msg encoding:NSUTF8StringEncoding]]; } if (message != NULL) { asl_free(message); } asl_free(response); asl_close(client); return consoleLog; } 

如果您的设备连接到Xcode,您可以在debugging区域看到控制台输出( NSLog等):

如果您正在运行应用程序并稍后连接到Xcode,我相信您可以在pipe理器中获取控制台日志。


编辑:为了在运行时访问日志文件,你应该尝试/var/log/system.log – 但是更好的是,我build议使用自定义的debuggingfunction,这个function会写入系统日志和/或文本视图。 (查看NSLogv,这在写封装函数的时候很有用)。这也有让你从一个地方禁用所有debugging日志的function(只需要改变你的debuggingfunction)。