为了调试目的,我想在运行时以类似于App Store上当前Console应用程序(可以在这里找到)的方式访问控制台打印输出。
我查看了文档,但是没有发现苹果提供的内容,但感觉自己缺少重要的东西。有什么见解吗?
谢谢。
为了调试目的,我想在运行时以类似于App Store上当前Console应用程序(可以在这里找到)的方式访问控制台打印输出。
我查看了文档,但是没有发现苹果提供的内容,但感觉自己缺少重要的东西。有什么见解吗?
谢谢。
<asl.h>
来实现。以下是一个我编写的示例,用于创建控制台消息数组。-(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,您可以在调试区域中看到控制台输出(例如NSLog
):
如果您正在运行应用程序并稍后连接到Xcode,则可以在组织者中获取控制台日志。
编辑:要在运行时访问日志文件,您应该尝试使用 /var/log/system.log —— 但更好的建议是使用自定义调试函数,它将写入系统日志和/或您的应用程序中的文本视图。 (查看 NSLogv,在编写包装函数时将非常有用。)这还具有让您从一个地方禁用所有调试日志的优点(只需更改调试函数即可)。