2013-03-18 32 views
3

假設我的應用程序崩潰意味着當時applicationWillTerminate函數被調用。在那個函數中,我想將崩潰日誌文件保存在臨時目錄中。 當應用程序啓動時,我想通過編碼從iOS設備上傳崩潰報告文件到我的服務器位置。如何在ios應用程序中存儲崩潰日誌文件?

我正在使用此代碼保存崩潰日誌文件。

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

但此代碼將在模擬器中工作。我可以看到這個文件在

/Users/UserNAme/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-sss--eee/Documents/console.log 

但我找不到這個文件在iOS設備。

注: 尋找在iOS設備上的文件我用iExplorer

回答

9

不幸的是,你不能在編程設備上的系統崩潰日誌獲取。爲了克服這一點,有許多商業,準商業和開源解決方案。

特別是,HockeyApp(現在由Microsoft擁有)和crittercism提供商業解決方案。另外,TestFlightApp(儘管由Apple購買)仍然通過其接口提供這種功能。

HockeyApp源代碼也可在github上獲得。

最後,這些系統大部分都使用了一個名爲plcrashreporter的底層崩潰捕獲器,它是一個開放源代碼框架,可以在您的目錄中放置近乎精確的iOS崩潰報告副本。

如果你想自己管理的東西,我強烈建議plcrashreporter,否則託管和商業解決方案可供選擇,你應該看看他們,自己決定。

+0

當然是使用這個應用程序TestFlightApp的deveoper,s和測試者的測試目的。在這裏,我只想將該崩潰文件發送到特定的郵件ID。 – Senthilkumar 2013-03-18 11:08:55

+0

上面的答案仍然是點。如果你需要自己處理崩潰報告,你將不得不自己生成它。絕對沒有辦法擺脫沙盒,並從設備中獲取操作系統版本的崩潰報告。唯一的另一種選擇是手動或者使用iTunes或Xcode將其從設備中取出,但我認爲您希望爲現場放置的設備而不是開發設備執行此操作。此外,大多數託管解決方案可以用於現場以及測試應用程序。 – gaige 2013-03-18 12:00:22

2

另一個有用的選項(我們使用它)是Crashlytics.com,這是免費的,有很多在報告控制(由Twitter現在擁有的,謹慎使用!)。

相關問題