iOS学习笔记40-日志重定向
来源:互联网 发布:迪优美特网络机顶盒多少钱 编辑:程序博客网 时间:2024/05/21 17:37
http://www.cnblogs.com/liutingIOS/p/5420826.html
一、日志重定向
我们在iOS开发过程中,我们时常会使用NSLog
打印到控制台的日志信息进行代码调试,但这样调试的前提是连接上Xcode。
如果进行真机调试但同时又不能连接Xcode的时候,就不能直接在xcode的控制台查看输出日志了,但是程序还是会执行那些Log的,如果要查看这些日志,我们就需要把输出日志信息保存到文件中,然后进行查看。
标准NSLog
的打印默认是往标准错误(stderr
)进行打印的,我们只需要修改NSLog
的打印输出路径即可实现日志重定向
以下是日志重定向代码:
#pragma mark - 用户方法,将NSLog的输出信息写入到文件中/* 将NSlog打印信息保存到Document目录下的文件中 */- (void)redirectLogToDocumentFolder{ // 获取沙盒路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentDirectory = [paths objectAtIndex:0]; // 获取打印输出文件路径 NSString *fileName = [NSString stringWithFormat:@"myData.log"]; NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName]; // 先删除已经存在的文件 NSFileManager *defaultManager = [NSFileManager defaultManager]; [defaultManager removeItemAtPath:logFilePath error:nil]; // 将NSLog的输出重定向到文件,因为C语言的printf打印是往stdout打印的,这里也把它重定向到文件 freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+", stdout); freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr);}
在AppDelegate
的application:didFinishLaunchingWithOptions:
中调用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ // 重定向Log日志信息到Document文件中 [self redirectLogToDocumentFolder]; return YES;}
到这里还没结束,因为你的Log日志信息已经打印到了真机应用的沙盒文件中,你还需要把它拷贝到你的Mac上进行查看,你就需要设置共享文件配置 :
在应用程序的
Info.plist
文件中添加UIFileSharingEnabled
键,并将键值设置为YES
。
一旦iOS设备插入到用户计算机,iTunes就会在选中设备的Apps标签中显示一个文件分享区域。设置了文件共享后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。就是说,设置了文件共享后,一旦设备连接上电脑,可以通过iTune查看指定应用程序的共享文件夹,将文件拷贝到你的电脑上看。
二、文件流知识补充
1. 打开文件
FILE *fp = fopen(文件路径,打开方式);
打开方式:
r
: 读,如果文件不存在返回NULL,存在就打开w
: 写,如果文件存在则覆盖,不存在则创建a
: 追加,如果文件存在则追加,不存在则创建r+
: 在r
的基础上,多增加了写的权限w+
: 在w
的基础上,多增加了读的权限a+
: 在a
的基础上,多增加了读的权限t
: 文本文件(默认的),结合有rt、wt、at、rt+b
: 二进制文件,结合有rb、wb、ab、rb+
2. 文件操作
char ch = fgetc(文件指针);
作用:从文件中读取一个字符
【fgetc和getc没有区别,用法也一样】fputc(字符,文件指针);
作用:写入一个字符到文件fgets(字符数组,长度n,文件指针);
作用:从文件指针指向的文件中读取n-1个字符存到字符数组里,会自动在后面加\0,字符数组用来保存你读取出来的字符串
【遇到“\n”立即结束读取】fputs(字符串,文件指针);
作用:写入一个字符串到文件指针指向的文件fread(保存数据的首地址,每块的大小,多少块,文件指针);
作用:从文件指针指向的文件中分块读取(文件指针),告诉它一次读取多少块(多少块),每块多大(第二个参数),存到哪(第一个参数)
【它只关心具体读的字节数,不会关心这些自己里面有没有换行 】fwrite(数据的首地址,每块的大小,多少块,文件指针);
作用:将数据分块写入到文件指针指向的文件。第一个是告诉系统,写入什么数据,第二个是告诉系统每块多少字节,第三个是告诉系统分多少块写入,第四个是写入到哪个文件fscanf(文件指针,格式化控制符,地址列表);
作用:格式化读取fprintf(文件指针,格式化控制符,参数列表);
作用:格式化写入freopen(文件路径path, 打开方式mode, 文件指针fp);
作用:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin
、stdout
和stderr
。其中stdin
是标准输入流,默认为键盘;stdout
是标准输出流,默认为屏幕;stderr
是标准错误流,一般把屏幕设为默认。
3. 关闭文件
fclose(文件指针);
0 0
- iOS学习笔记40-日志重定向
- iOS学习笔记40-日志重定向
- iOS学习笔记 日志重定向
- iOS--日志重定向
- 重定向学习笔记
- iOS日志本地化--日志重定向
- Linux学习笔记--输出重定向与输入重定向
- weblogic日志重定向
- shell日志重定向
- linux学习笔记—输出重定向
- 马哥linux学习笔记 重定向
- #学习笔记#(29)重定向方法总结
- Linux学习笔记(7)----数据流重定向
- Linux学习笔记--输出重定向
- Servlet--学习笔记(二)重定向
- Linux学习笔记之输入输出重定向
- chales学习笔记之 重定向
- 笔记:重定向输出流实现程序日志
- arm+linux fl2440 ds18b20 温度传感器驱动编写及测试
- iScroll.js 用法参考
- 为什么改变字符串中的字符需要使用引用
- Java代码的规范(自己在公司实习的过程自己总结的代码规范,不断更新)
- Java学习日志(1)
- iOS学习笔记40-日志重定向
- iOS-Core-Animation-Advanced-Techniques(五)
- 回调函数
- win64下安装配置eclipse+MySQL+Tomcat
- 二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
- android Studio 一打开报错:11facets cannot be loaded
- git status
- 用em替换px
- JAVA 比较两个日期相差的天数