ios xcode停止運(yùn)行如何打印日志保存到真機(jī)

很多時(shí)候我們會(huì)遇到這樣的場(chǎng)景:Xcode停止運(yùn)行了,我們?nèi)匀恍枰吹轿覀冃枰娜罩驹撛趺崔k?

  • 下面方法在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;中調(diào)用
 - (void)redirectNSLogToDocumentFolder
{
    //如果已經(jīng)連接Xcode調(diào)試則不輸出到文件
    if(isatty(STDOUT_FILENO)) {
        return;
    }
    
    UIDevice *device = [UIDevice currentDevice];
    if([[device model] hasSuffix:@"Simulator"]){ //在模擬器不保存到文件中
        return;
    }
    
    //獲取Document目錄下的Log文件夾,若沒有則新建
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"];
    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL fileExists = [fileManager fileExistsAtPath:logDirectory];
    if (!fileExists) {
        [fileManager createDirectoryAtPath:logDirectory  withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //每次啟動(dòng)后都保存一個(gè)新的日志文件中
    NSString *dateStr = [formatter stringFromDate:[NSDate date]];
    NSString *logFilePath = [logDirectory stringByAppendingFormat:@"/%@.txt",dateStr];
    
    // freopen 重定向輸出輸出流,將log輸入到文件
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
}
  • info.plist中添加UIFileSharingEnabled設(shè)置為YES 這一步是為了讓app通過itunes進(jìn)行文件共享 這樣我們就可以通過itunes獲取log日志了
  • 連接itunes查看log文件


    WechatIMG6.jpeg

參考文章http://blog.csdn.net/winzlee/article/details/50483424

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容