很多時候我們會遇到這樣的場景:Xcode停止運行了菲饼,我們?nèi)匀恍枰吹轿覀冃枰娜罩驹撛趺崔k劲藐?
- 下面方法在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions熙掺;中調(diào)用
- (void)redirectNSLogToDocumentFolder
{
//如果已經(jīng)連接Xcode調(diào)試則不輸出到文件
if(isatty(STDOUT_FILENO)) {
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];
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:@"/%@.txt",dateStr];
// freopen 重定向輸出輸出流稚机,將log輸入到文件
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
}
- info.plist中添加UIFileSharingEnabled設(shè)置為YES 這一步是為了讓app通過itunes進行文件共享 這樣我們就可以通過itunes獲取log日志了
-
連接itunes查看log文件
WechatIMG6.jpeg