博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打印log等内容到文件中, 追加
阅读量:4115 次
发布时间:2019-05-25

本文共 2945 字,大约阅读时间需要 9 分钟。

有需求,需要把log文件打印到文件中进行转存,或者上传到服务器, 代码如下:

(要打印的内容为NSString)

方法1. 成功打印,但要注意下面这种方式会不断地打开这个文件,然后不断地关闭文件,(在正常的代码中,应该是打开一次,关闭一次即可,因为打开和关闭文件流的操作是很费时的。)

#define recordFilePath (@"/Users/heqin/Desktop/recordRequstTimeLast.log")

NSDate *curDate = [NSDate date];

NSTimeInterval lastTimeLength = [curDate timeIntervalSinceDate:requestHappenDate];

NSString *resultString = [NSString stringWithFormat:@"%@, interval=%f, success=%@", [request.url path], lastTimeLength, success?@"YES":@"NO"];

FILE *file = fopen([recordFilePath UTF8String], [@"ab+"UTF8String]);

if (file != NULL) {

    fseek(file, 0, SEEK_END);

}

NSData *resultData = [resultString dataUsingEncoding:NSUTF8StringEncoding];

int readSize = [resultData length];

fwrite((const void *)[resultData bytes], readSize, 1, file);

fclose(file);

方法2.(这种方法看起来似乎更接近OC代码)

 NSFileManager *file_manager = [NSFileManager defaultManager];
    NSString *fileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
     stringByAppendingPathComponent:@"xxx.txt"];
    BOOL isExit = [file_manager fileExistsAtPath:fileName];
    if (!isExit) {


        [file_manager createFileAtPath:fileName contents:nil attributes:nil];
    }
    NSFileHandle *outFile = [NSFileHandle fileHandleForWritingAtPath:fileName];
    //找到并定位到outFile的末尾位置(在此后追加文件)
    [outFile seekToEndOfFile];
    NSString *bs = [NSString stringWithFormat:@"@"%@",\n", album.Img];
//    [[bs dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileName atomically:YES];
    [outFile writeData:[bs dataUsingEncoding:NSUTF8StringEncoding]];
    //关闭读写文件
    [outFile closeFile];

方法3. 

- (NSString*)logFilePath {
2 //非越狱版路径 3 #ifndef CRACK 4 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 5 NSString *documentsDirectory = [paths objectAtIndex:0]; 6 //越狱版路径 7 #else 8 NSString *documentsDirectory = @"/var/root/Media/xiaodao/"; 9 #endif 10 NSString *logDir = [documentsDirectory stringByAppendingPathComponent:@"logs"]; 11 BOOL isDir = YES; 12 //如果logs文件夹存不存在,则创建 13 if([[NSFileManager defaultManager] fileExistsAtPath:logDir isDirectory:&isDir] == NO) 14 {
15 [[NSFileManager defaultManager] createDirectoryAtPath:logDir withIntermediateDirectories:YES attributes:nil error:nil]; 16 } 17 //以当天的时间为文件名,文件名后缀为.log 18 NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]]; 19 NSString *logPath = [logDir stringByAppendingPathComponent:fileName]; 20 return logPath; 21 }
// 开始打印
- (void)startLog {
2 freopen([[self logFilePath] cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 3 } freopen重定向打印 stderr为标准出错信息 // 关闭日志 - (void)finishLog { 2 fflush(stderr); 3 dup2(dup(STDERR_FILENO), STDERR_FILENO); 4 close(dup(STDERR_FILENO)); 5 } // 删除日志 - (BOOL)deleteLogFile {
2 BOOL success = [[NSFileManager defaultManager] removeItemAtPath:[self logFilePath] error:nil]; 3 return success; 4 }

转载地址:http://uxwpi.baihongyu.com/

你可能感兴趣的文章
链表练习
查看>>
加密与解密;解压缩
查看>>
插入排序和快速排序
查看>>
类与继承
查看>>
给定两个整形变量的值将两个值的内容进行交换
查看>>
求10 个整数中最大值。
查看>>
求两个数的最大公约数
查看>>
总结c语言的操作符
查看>>
练习3
查看>>
求出0〜999之间的所有“水仙花数”并输出。
查看>>
编程求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和(a是一个数字);编程验证花括号成对出现。
查看>>
输出菱形
查看>>
函数编程的练习
查看>>
创建一个数组, 实现函数init()初始化数组、 实现reverse()函数完成数组元素的逆置,实现empty()清空数组。要求:自己设计函数的参数,返回值。
查看>>
写一个函数返回参数二进制中 1 的个数
查看>>
1.输出一个整数的每一位。2. 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
查看>>
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
查看>>
小游戏——猜数字
查看>>
在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
查看>>
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
查看>>