1. 程式人生 > >[NSLog日誌]ios在真機中將NSLog日誌存入檔案並儲存到document目錄

[NSLog日誌]ios在真機中將NSLog日誌存入檔案並儲存到document目錄

儲存Log日誌
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //當真機連線Mac除錯的時候把這些註釋掉,否則log只會輸入到檔案中,而不能從xcode的監視器中看到。
    //如果是真機就儲存到Document目錄下的log.text檔案中
    UIDevice *device = [UIDevice currentDevice];
    if (![[device model] isEqualToString:@"iPhone 4s Simulator"]) {
        // 開始儲存日誌檔案
        [self redirectNSlogToDocumentFolder];
    }
    /*******************************************************************************/

    return YES;
    
}

儲存到(/Documents/log.text)檔案的Log日誌

#pragma mark - 儲存到(/Documents/log.text)檔案的Log日誌
- (void)redirectNSlogToDocumentFolder {
    
    /*
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    NSString *date = [formatter stringFromDate:[NSDate date]];
    NSString *fileName = [NSString stringWithFormat:@"%@.log",date];
     */
    
    NSString *fileName = [NSString stringWithFormat:@"log.text"];
    NSString *logfilePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",fileName];
    NSLog(@"logfilePath = %@",logfilePath);
    
    NSFileManager *fileManage = [NSFileManager defaultManager];
    //判斷是否存在(/Documents/log.text)檔案路徑,不存在就建立檔案
    BOOL islogfilePath = [fileManage fileExistsAtPath:logfilePath];
    if (!islogfilePath) {
        [fileManage createFileAtPath:logfilePath contents:nil attributes:nil];
    }
    freopen([logfilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
    /*
    fropen([logfilePath cStringUsingEncoding:NSASCIIStringEncoding], stdout);
    fropen([logfilePath cStringUsingEncoding:NSASCIIStringEncoding], stderr);
    */
}

Q:如何將日誌列印到一個檔案

A:可以使用freopen函式重定向標準輸出和標準出錯檔案。因為printf函式會向標準輸出(stdout)列印,而NSLog函式會向標準出錯(stderr)列印。重新定向標準輸出(stdout)和標準出錯(stderr)到一個檔案將會使他們列印日誌到一個檔案中。

freopen("/tmp/log.txt",
 "a+", stdout);

freopen("/tmp/log.txt",
 "a+", stderr);


專案配置共享檔案 您可以通過如下步驟來讓應用程式支援檔案共享:在應用程式的Info.plist檔案中新增UIFileSharingEnabled鍵,並將鍵值設定為YES。將您希望共享的檔案放在應用程式的Documents目錄。一旦裝置插入到使用者計算機,iTunes 9.1就會在選中裝置的Apps標籤中顯示一個File Sharing區域。此後,使用者就可以向該目錄新增檔案或者將檔案移動到桌面計算機中。如果應用程式支援檔案共享,當檔案新增到Documents目錄後,應用程式應該能夠識別並做出適當響應。例如說,應用程式可以將新檔案的內容顯示介面上。請不要向用戶展現目錄的檔案列表並詢問他們希望對檔案執行什麼操作。