- (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;
}
將控制檯NSLog以文件形式存儲到磁盤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.