当前位置:   article > 正文

iOS真机调试打印并保存控制台输出日志_xcode 生成控制台输出日志txt文件

xcode 生成控制台输出日志txt文件

查看项目的输出日志有下面两种情况:

1、 如果是模拟器或者真机连接xcode的时候就可以直接在控制台打印log,查看输出日志;

2、 如果是真机调试同时不能连接xcode的时候就不能直接在xcode的控制台查看输出日志了,但是程序还是会执行那些log的,如果要查看这些日志,我们就可以把输出日志保存到沙盒的Documents中,保存成txt文档来查看。代码如下:

  1. #pragma mark - 保存日志文件
  2. - (void)redirectNSLogToDocumentFolder
  3. {
  4. //如果已经连接Xcode调试则不输出到文件
  5. if(isatty(STDOUT_FILENO)) {
  6. return;
  7. }
  8. UIDevice *device = [UIDevice currentDevice];
  9. if([[device model] hasSuffix:@"Simulator"]){ //在模拟器不保存到文件中
  10. return;
  11. }
  12. //获取Document目录下的Log文件夹,若没有则新建
  13. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  14. NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"];
  15. NSFileManager *fileManager = [NSFileManager defaultManager];
  16. BOOL fileExists = [fileManager fileExistsAtPath:logDirectory];
  17. if (!fileExists) {
  18. [fileManager createDirectoryAtPath:logDirectory withIntermediateDirectories:YES attributes:nil error:nil];
  19. }
  20. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  21. [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
  22. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //每次启动后都保存一个新的日志文件中
  23. NSString *dateStr = [formatter stringFromDate:[NSDate date]];
  24. NSString *logFilePath = [logDirectory stringByAppendingFormat:@"/%@.txt",dateStr];
  25. // freopen 重定向输出输出流,将log输入到文件
  26. freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
  27. freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
  28. }

在程序中直接调用此方法即可。


剩下的就是查看保存的txt格式的输出日志,可以用iPhone Explorer软件来查看,下载iPhone Explorer,连接手机,如图,即可找到对应app的输出日志。

但是这些txt文件是不能在这里面直接查看的,可以将其用鼠标直接拖到桌面上,即可查看。



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/264795
推荐阅读
相关标签
  

闽ICP备14008679号