对于真机,日志没法保存,不好分析问题。所以有必要将日志保存到应用的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
相关推荐
将iOS上的日志记录提升到更高级别。 它支持控制台,文件和通过TCP套接字输出到远程Logstash的日志记录中。 支持logz.io可用。
对于那些做后端开发的工程师来说,看LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试图调试,特别是对一些不太容易重现的Bug经常...
- 重定向NSLog输出日志到文件中,这样你就不用替换到你项目中已有的NSLog()代码啦。 - 重定向程序奔溃日志到文件中。 - 自动根据当前设备信息选择要不要记录日志的同时把日志打印到控制台。 - 方便增删改查当前...
用于Unity打包移动设备的调试,能够简单快速的查看报错等信息 Unity 在安卓IOS等移动设备环境下的log查看解决方案
iOS手机端log打印显示工具源码,在不连接xcode时,你仍然可以清晰的看到app内系统日志以及NSLog打印的日志,开发调试必不可少,大大提高调试效率,不用时时都链接xcode。 快速方便集成,两行代码即可搞定。 这里提供...
苹果手机ios抓取蓝牙HCI日志 ,配合wireshark。可以抓取其蓝牙hci数据
刚把Xcode更新到最新的8,一运行发现好多log输出,根据如下操作可以关掉这些log日志,点击项目Edit Scheme – Run – Arguments – Environment Variables里添加:Name:OS_ACTIVITY_MODE Value:disable ...
IOS 彩色日志IOS 彩色日志CocoaLumberjack
Unity3D IOS下保存和读取资源(保存到文件夹目录),在Unity中IOS下将资源读取和保存,保存可以保存到文件夹目录
作者jiaforios,源码...注意事项:重定向之后,如果连接Xcode 或者模拟器调试将看不到常规输出日志,可以在 ZJLogManger 中将 self.XcodeOutput = self.SimulatorOutput = YES 就可正常显示但是不会继续重定向
1.打印log可以打印有颜色的log,前提是安装第三方插件。压缩包附带颜色的第三...2.打印崩溃日志的log输出直接保存到沙盒文件。崩溃日志崩溃多少次就分多少个文档存储。但是打印log每天都只保存到一个文件。默认是5天。
主要介绍了iOS中解决Xcode9的Log日志无法输出中文的问题小结,需要的朋友可以参考下
用Instrument 监测的Log 日志,可供参考
可以把log写到txt, 添加了追加选项, 下次运行会保留上次的Log内容。
说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中。本文介绍如何不借助第三方框架实现iOS开发中得文件上传。 由于过程较为复杂,因此本文只贴出部分关键代码。 主控制器的关键代码: 代码如下:...
主要介绍了iOS AFNetworking中cookie重定向代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
ios中利用ios sdk实现上传文件到ftp服务器
一个Android统一管理的Log类,很方便的管理项目中的Log日志