2.测试以及Log记录
2.1 公版Log打开的方法
在公版的Demo上,有提供抓取本应用程序的运行log,可供用户/测试人员抓获运行时的log,在出现异常时,提供进行分析。
打开公版demo的Log方法如下:
设置->关于->连续点击软件版本上方的icon,直到提示log已打开
log记录提交的方法: 设置->关于->log记录->进入选中时间点对应的Log,打开进行分享即可。
2.2 开发人员使用Log保存记录
开发人员可以通过参考 AppDelegate.m
的方法进行Log保存记录。
参考代码如下:
1#pragma mark - 保存日志文件
2- (void)redirectNSLogToDocumentFolder
3{
4 //如果已经连接Xcode调试则不输出到文件
5 if(isatty(STDOUT_FILENO)) {
6 return;
7 }
8
9 UIDevice *device = [UIDevice currentDevice];
10 if([[device model] hasSuffix:@"Simulator"]){ //在模拟器不保存到文件中
11 return;
12 }
13
14 //获取Document目录下的Log文件夹,若没有则新建
15 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
16 NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"];
17
18 NSFileManager *fileManager = [NSFileManager defaultManager];
19 BOOL fileExists = [fileManager fileExistsAtPath:logDirectory];
20 if (!fileExists) {
21 [fileManager createDirectoryAtPath:logDirectory withIntermediateDirectories:YES attributes:nil error:nil];
22 }
23
24 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
25 [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
26 [formatter setDateFormat:@"yyyy-MM-dd-HH-mm-ss"]; //每次启动后都保存一个新的日志文件中
27 NSString *dateStr = [formatter stringFromDate:[NSDate date]];
28 NSString *logFilePath = [logDirectory stringByAppendingFormat:@"/%@.txt",dateStr];
29
30 // freopen 重定向输出输出流,将log输入到文件
31 freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
32 freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
33}