對於真機,日誌沒法儲存,不好分析問題。所以有必要將日誌儲存到應用的docunment目錄下,並設定成共享檔案,這樣才能取出分析。
首先是日誌輸出,分為c的printf和標準的nslog輸出,printf會向標準輸出(sedout)列印,而nslog則是向標準出錯(stderr),我們需要同時讓他們都將日誌列印到乙個檔案中。
例子:freopen("xx.log","a+",stdout);
freopen("xx.log","a+",stderr);
具體做法:
// 將nslog列印資訊儲存到document目錄下的檔案中
- (void)redirectnslogtodocumentfolder
nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
nsstring *documentdirectory = [paths objectatindex:0];
nsstring *filename = [nsstring stringwithformat:@"dr.log"];// 注意不是nsdata!
// 先刪除已經存在的檔案
nsfilemanager *defaultmanager = [nsfilemanager defaultmanager];
[defaultmanager removeitematpath:logfilepath error:nil];
// 將log輸入到檔案
freopen([logfilepath cstringusingencoding:nsasciistringencoding], "a+", stdout);
freopen([logfilepath cstringusingencoding:nsasciistringencoding], "a+", stderr);
// 當真機連線mac除錯的時候把這些注釋掉,否則log只會輸入到檔案中,而不能從xcode的監視器中看到。
// 如果是真機就儲存到document目錄下的drm.log檔案中
uidevice *device = [uidevice currentdevice];
if (![[device model] isequaltostring:@"ipad simulator"]) {
// 開始儲存日誌檔案
[self redirectnslogtodocumentfolder];
最後配置共享資料夾:
就是說,一旦裝置連線上電腦,可以通過itune檢視指定應用程式的共享資料夾,將檔案拷貝到你的電腦上看。
1.2.
將Log日誌重定向輸出到檔案中儲存 iOS
對於真機,日誌沒法儲存,不好分析問題。所以有必要將日誌儲存到應用的docunment目錄下,並設定成共享檔案,這樣才能取出分析。首先是日誌輸出,分為c的printf和標準的nslog輸出,printf會向標準輸出 sedout 列印,而nslog則是向標準出錯 stderr 我們需要同時讓他們都將日...
ios 將NSLog日誌重定向輸出到檔案中儲存
對於那些做後端開發的工程師來說,看log解bug應該是理所當然的事,但我接觸到的移動應用開發的工程師裡面,很多人並沒有這個意識,查bug時總是一遍一遍的試圖重現,試圖除錯,特別是對一些不太容易重現的bug經常焦頭爛額。而且ios的異常機制比較複雜,objective c的語言駕馭也需要一定的功力,做...
iOS學習筆記 日誌重定向
我們在ios開發過程中,我們時常會使用nslog列印到控制台的日誌資訊進行 除錯,但這樣除錯的前提是連線上xcode。如果進行真機除錯但同時又不能連線xcode的時候,就不能直接在xcode的控制台檢視輸出日誌了,但是程式還是會執行那些log的,如果要檢視這些日誌,我們就需要把輸出日誌資訊儲存到檔案...