Xcode重定向log到本地

Posted by 易博 on May 18, 2017

在使用Xcode开发过程中,有时候调试问题的前提是必须要杀掉app,这个时候就无法与xcode联机查看日志了,那么怎么办呢?我们可以将nslog的信息输出到本地的log文件,然后导出查看。

开始前我们需要在工程的plist文件中设置日志共享,这样才能利用itunes导出日志文件

在info.plist中,增加Application supports iTunes file sharing,并将值设置为true,然后在程序启动之后调用下面的方法即可。

-(void)redirectNSlogToDocumentFolder {  
    NSLog(@"Log重定向到本地,如果您需要控制台Log,注释掉重定向逻辑即可。");  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
    NSString *documentDirectory = [paths objectAtIndex:0];  

    NSDate *currentDate = [NSDate date];  
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];  
    [dateformatter setDateFormat:@"MMddHHmmss"];  
    NSString *formattedDate = [dateformatter stringFromDate:currentDate];  

    NSString *fileName = [NSString stringWithFormat:@"log%@.log", formattedDate];  
    NSString *logFilePath =  
    [documentDirectory stringByAppendingPathComponent:fileName];  

    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);  
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);  
}