將控制檯NSLog以文件形式存儲到磁盤

- (void)removelogFiles{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *rtcLogDirectory=[[paths objectAtIndex:0] stringByAppendingString:@“/NS_Log"]; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL rtcLogfileExists = [fileManager fileExistsAtPath:rtcLogDirectory]; if (rtcLogfileExists){ NSArray *subPathArr = [[NSFileManager defaultManager] subpathsAtPath:rtcLogDirectory]; if (subPathArr){ for (NSString *subPath in subPathArr){ NSString *filePath = [rtcLogDirectory stringByAppendingPathComponent:subPath]; [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil]; } } } } // 保存日誌文件 - (void)redirectNSLogToDocumentFolder{ // 如果已經連接Xcode調試則不輸出到文件 if(isatty(STDOUT_FILENO)) //STDOUT_FILENO == 1 { return; } UIDevice *device = [UIDevice currentDevice]; if([[device model] hasSuffix:@"Simulator"]) { //在模擬器不保存到文件中return; } // 獲取Document目錄下的Log文件夾,若沒有則新建 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *logDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Log"]; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL fileExists = [fileManager fileExistsAtPath:logDirectory]; //remove logs first if (fileExists){ NSArray *subPathArr = [[NSFileManager defaultManager] subpathsAtPath:logDirectory]; if (subPathArr){ for (NSString *subPath in subPathArr){ NSString *filePath = [logDirectory stringByAppendingPathComponent:subPath]; [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil]; } } } 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"]; //每次啓動後都保存一個新的日誌文件中 NSString *dateStr = [formatter stringFromDate:[NSDate date]]; NSString *logFilePath = [logDirectory stringByAppendingFormat:@"/%@.txt",dateStr]; // freopen 重定向輸出輸出流,將log輸入到文件 freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout); freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr); } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self removelogFiles]; [self redirectNSLogToDocumentFolder]; return YES; }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章