【发布时间】:2011-08-22 16:58:14
【问题描述】:
出于调试目的,我想在运行时以类似于 App Store 上当前控制台应用程序的方式访问控制台打印输出(可以找到 here)。
我对文档进行了一些搜索,但找不到 Apple 提供的任何内容,但我觉得我错过了一些重要的东西。有什么见解吗?
谢谢。
【问题讨论】:
标签: objective-c ios console
出于调试目的,我想在运行时以类似于 App Store 上当前控制台应用程序的方式访问控制台打印输出(可以找到 here)。
我对文档进行了一些搜索,但找不到 Apple 提供的任何内容,但我觉得我错过了一些重要的东西。有什么见解吗?
谢谢。
【问题讨论】:
标签: objective-c ios 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;
}
【讨论】:
asl 的应用会。
如果您的设备连接到 Xcode,您可以在调试区域看到控制台输出(NSLogs 等):
如果您稍后运行应用程序并连接到 Xcode,我相信您可以在 Organizer 中获取控制台日志。
编辑:要在运行时访问日志文件,您应该尝试 /var/log/system.log - 但更好的是我建议使用自定义调试功能,该功能将写入系统日志和/或文本视图你的应用程序。 (查看 NSLogv,它在编写包装函数时会很有用。)这还有一个好处是可以让您从一个地方禁用所有调试日志(只需更改您的调试函数)。
【讨论】: