美文网首页
iOS 将NSLog写入文件中

iOS 将NSLog写入文件中

作者: 小明讲啥故事 | 来源:发表于2019-03-12 13:17 被阅读0次

写在AppDelegate.m的** application: didFinishLaunchingWithOptions**中:

#if (DEBUG == 1 || TARGET_OS_SIMULATOR)
#else
#ifdef FILELOG_SUPPORT
    [self redirectNSlogToDocumentFolder];
#endif
#endif
#pragma mark 日志记录方法
- (void)redirectNSLogToDocumentFolder {

   UIDevice *device = [UIDevice currentDevice];
    if([[device model] hasSuffix:@"Simulator"]) { //在模拟器不保存到文件中
        return;
    }
    
    //将NSlog打印信息保存到Document目录下的Log文件夹下
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"];
    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL fileExists = [fileManager fileExistsAtPath:logDirectory];
    if (!fileExists) {
        [fileManager createDirectoryAtPath:logDirectory  withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //每次启动后都保存一个新的日志文件中
    NSString *dateStr = [formatter stringFromDate:[NSDate date]];
    NSString *logFilePath = [logDirectory stringByAppendingFormat:@"/%@.log",dateStr];
    //将log输入到文件
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
    
    //删除今天以前的数据
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        [formatter setDateFormat:@"yyyy-MM-dd"];
        NSString *ToDayTimeStr = [formatter stringFromDate:[NSDate date]];
        NSDate *ToDayDate = [formatter dateFromString:ToDayTimeStr];
        NSArray *fileListArr = [fileManager contentsOfDirectoryAtPath:logDirectory error:nil];
        for (NSString *Str in fileListArr) {
            NSString *DayTimeInStr = [Str substringToIndex:10];
            NSDate *OtherDate = [formatter dateFromString:DayTimeInStr];
            NSComparisonResult result = [ToDayDate compare:OtherDate];
            if (result == NSOrderedDescending) {
                NSFileManager *fileManger = [NSFileManager defaultManager];
                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"];
                NSString *filePath = [logDirectory stringByAppendingPathComponent:Str];
                [fileManger removeItemAtPath:filePath error:nil];
            }
        }
    });
}

相关文章

  • iOS 将NSLog写入文件中

    写在AppDelegate.m的** application: didFinishLaunchingWithOpt...

  • IOS NSLog将日志写入文件中

    1.首先获取要写入文件的路径NSArray *paths = NSSearchPathForDirectories...

  • iOS 将NSLog写入到文件中

    在AppDelegate.m的** application: didFinishLaunchingWithOpti...

  • iOS开发之真机中将NSLog日志存入文件并保存到documen

    1.自定义好方法 #pragma mark - 用户方法,将NSLog的输出信息写入到.log文件中// 将NSL...

  • NSLog 保存log文件

    #pragma mark - 自定义方法,将nslog的输出信息写入到dr.log文件中 - (void)nslo...

  • 沙盒文件浏览

    站在巨人的肩膀上实现实时浏览log文件方案 iOS本地写log方案,如下,就可以把通过NSLog打印的东东,写入文...

  • 关于 iOS 输出 PDF 文档

    关于 iOS 输出 PDF 文档 iOS 开发中难免会遇到生成文件的需求,生成文件还是很简单的,直接将字符串写入文...

  • 文件操作

    读取和写入:文件有内容读取就是将文件中的内容读取到内存中。写入就是将内存中的内容写入到磁盘文件中。内存就相当于你的...

  • plist 文件写入与读取

    plist是iOS中特有的一种文件形式,将数据写入plist文件的实质就是生成plist文件,那什么样的数据才能生...

  • iOS UIImage 图片旋转

    最近因项目中缺少ios开发,临时客串解决一些ios问题。在一个需求中,获取到照片的数据,将UIImage写入文件,...

网友评论

      本文标题:iOS 将NSLog写入文件中

      本文链接:https://www.haomeiwen.com/subject/tmigpqtx.html