对于真机,日志没法保存,不好分析问题。所以有必要将日志保存到应用的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!

NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];

// 先删除已经存在的文件

NSFileManager *defaultManager = [NSFileManager defaultManager];

[defaultManager removeItemAtPath:logFilePath error:nil];

// 将log输入到文件

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

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

}

此函数要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

中调用,这个函数在AppDelegate.m中实现的。

/*******************************************************************************/

// 当真机连接Mac调试的时候把这些注释掉,否则log只会输入到文件中,而不能从xcode的监视器中看到。

// 如果是真机就保存到Document目录下的drm.log文件中

UIDevice *device = [UIDevice currentDevice];

if (![[device model] isEqualToString:@"iPad Simulator"]) {

// 开始保存日志文件

[self redirectNSlogToDocumentFolder];

}

/*******************************************************************************/

最后配置共享文件夹:

在应用程序的Info.plist文件中添加UIFileSharingEnabled键,并将键值设置为YES。将您希望共享的文件放在应用程序的Documents目录。一旦设备插入到用户计算机,iTunes 9.1就会在选中设备的Apps标签中显示一个File Sharing区域。此后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。如果应用程序支持文件共享,当文件添加到Documents目录后,应用程序应该能够识别并做出适当响应。例如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现目录的文件列表并询问他们希望对文件执行什么操作。

就是说,一旦设备连接上电脑,可以通过iTune查看指定应用程序的共享文件夹,将文件拷贝到你的电脑上看。

参考连接:

1.http://hi.baidu.com/ios_zb_com/item/ea528f4a8b1100d8c1a59217

2.http://www.cnblogs.com/ThankForYou/archive/2012/09/12/2681739.html

最新文章

  1. css3 TransformZ() 3D缩放
  2. java提高篇(六)-----使用序列化实现对象的拷贝
  3. Yii2.0高级框架数据库增删改查的一些操作(转)
  4. oracle 行转列的例子
  5. ueditor:原谅我这一生不羁放纵爱独特
  6. hdu 1531(差分约束)
  7. 9、四大组件之四-Broadcast Receiver
  8. 帝国CMS附件大小限制
  9. 转:微博"收藏/赞/转发"技术资料汇总
  10. Windows 批处理文件
  11. Factorization Machines 学习笔记(三)回归和分类
  12. WPF案例(-)模拟Windows7 Win+Tab切换
  13. F数圈圈
  14. UVA 1584 字符串
  15. java反射使用及性能比较
  16. 《Android插件化开发指南》面世
  17. ShareSVN授权的代码示例
  18. 关于package.json
  19. idea 提示忽略大小写
  20. forEach遍历数组对象且去重

热门文章

  1. ubuntu 开发环境搭建 lisp gcc python perl mysql
  2. com组件 Ieframe的主页锁定
  3. java基础回顾(三)——HashMap与HashTable
  4. 使用VAssistX给文件和函数添加注释-2015.12.31
  5. Objective-C中#define的常见用法
  6. solr5.5教程-tomcat布署
  7. Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍
  8. Android WebRTC 音视频开发总结(一)
  9. 九度OJ 1544 数字序列区间最小值
  10. CSS控制div宽度最大宽度/高度和最小宽度/高度