如何在ios应用程序中存储崩溃日志文件?

Sen*_*mar 3 objective-c crash-reports ios ios6

假设我的应用程序崩溃意味着在那个时候applicationWillTerminate调用函数.在该功能中,我想将崩溃日志文件保存在Temporary目录中.当应用程序在那时启动时,我想通过编码将崩溃报告文件从iOS设备上传到我的服务器位置.

我正在使用此代码来保存崩溃日志文件.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
Run Code Online (Sandbox Code Playgroud)

但是这段代码可以在模拟器中使用.我能够看到这个文件

/Users/UserNAme/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-sss--eee/Documents/console.log
Run Code Online (Sandbox Code Playgroud)

但我无法在ios设备中找到此文件.

注意:在我正在使用的ios设备中查找文件 iExplorer

gai*_*ige 9

不幸的是,您无法以编程方式访问设备上的崩溃日志.为了克服这个问题,有许多商业,准商业和开源解决方案.

特别是,HockeyApp(现在由微软拥有)和批评商提供商业解决方案.此外,TestFlightApp(尽管Apple购买)仍然通过其界面提供此类功能.

HockeyApp源代码也可以在github上找到.

最后,这些系统中的大部分都使用了一个名为plcrashreporter的底层崩溃捕获器,它是一个开源框架,可以在您的目录中放置几乎完全相同的iOS崩溃报告.

如果您想自己管理,我强烈建议plcrashreporter,否则托管和商业解决方案都可用,您应该查看它们并自行决定.