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}