我正在记录一堆数据NSLog()
.当我的iPhone没有连接到我的开发机器并在调试器下运行时,有没有办法捕获日志数据?
例如,我可以将其重定向到文件,然后在稍后的时间点通过Xcode读取日志文件吗?我需要这样做,以便在WiFi很差的情况下测试我的应用程序,这需要我远离我的办公桌.
下面的方法将在您的应用程序的Documents文件夹中创建一个文件名"console.log",以便稍后阅读它.
在程序开头调用此方法:
- (void) redirectConsoleLogToDocumentFolder { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"]; freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); }
日志永远不会被删除,因此请谨慎使用.
在现场测试应用程序后,将手机重新连接到Mac,在Xcode中打开管理器.在"摘要"面板中,您可以获得手机上所有应用的列表.展开您正在调试的那个,您将看到名为"Application Data"的包.
单击其名称右侧的箭头并保存.您将以一个名为Bundle Identifier的文件夹结尾,后跟一个日期.
在此文件夹中,您将找到您的Documents文件夹,其中应包含console.log
我非常确定NSLog()调用将写入系统控制台日志,因此如果您在离线后将iPhone连接到计算机,您应该能够在XCode Organizer中查看控制台日志.唯一需要注意的是控制台日志的大小有限,因此如果您进行大量日志记录,可能会导致较旧的条目被删除.
App Store中还有一个Console应用程序,但它仅适用于iOS 6及更早版本.
当iOS 7问世时,它有效地停止了工作.(它现在只能读取自己的控制台日志,而不是整个系统的日志.)