NSLog重写定向

作者: 十一岁的加重 | 来源:发表于2017-06-21 13:25 被阅读12384次

/**
 在给测试打包时,经常出现一些问题,没有log太坑了,直接输出到doc目录吧
 */
- (void)redirectNSLogToDocumentFolder {
    
    //如果已经连接Xcode调试则不输出到文件
    //该函数用于检测输出 (STDOUT_FILENO) 是否重定向 是个 Linux 程序方法
    if(isatty(STDOUT_FILENO)) {
        return;
    }
#if (TARGET_IPHONE_SIMULATOR)
    // 判断 当前是否在 模拟器环境 下 在模拟器不保存到文件中
#else
    //将NSlog打印信息保存到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:@"/%@.log",dateStr];
    
    // 将log输入到文件
    freopen([logFilePath cStringUsingEncoding:NSUTF8StringEncoding], "a+", stdout);
    freopen([logFilePath cStringUsingEncoding:NSUTF8StringEncoding], "a+", stderr);
    
#endif
}

引用:
http://danny-lau.com/2017/05/22/ios-expection-catch/

相关文章

  • NSLog重写定向

    引用:http://danny-lau.com/2017/05/22/ios-expection-catch/

  • 重写 NSLog

    重写NSLog 使用上述宏,需要build settings的macro中DEBUG设置正确。 常用输出:

  • NSLog重定向

    //实现下面的方法完成NSLog重定向到文件 - (void)redirectNSLogToDucumentFil...

  • dup2 重定向捕获日志

    1、介绍 NSLog最后重定向的句柄是STDERR,NSLog输出的日志内容,最终都通过STDERR句柄来记录,而...

  • NSLog重写--宏定义

    在运行应用时候,我们可能会加入一些打印信息来帮助我们跟踪应用的运行信息。可是过多的NSLog是非常耗费性能的,在D...

  • 各种iOS面试题

    1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...

  • (转)NSLog重写--宏定义

    文/iOneWay(简书作者)原文链接:http://www.jianshu.com/p/acbe5e5c59e4...

  • WebView相关设置

    重定向问题 通过setWebViewClient方法重写WebViewClientEx内部的shouldOverr...

  • IIS设置URL重写,实现页面的跳转的重定向方法

    默认IIS是不提供URL重写模块的。请注意,不要将IIS默认的HTTP重定向理解为url重写。 安装url重写模块...

  • nginx配置-rewrite地址重写

    server {rewrite 规则 定向路径 重写类型;}规则:可以是字符串或者正则来表示想匹配的目标url定向...

网友评论

    本文标题:NSLog重写定向

    本文链接:https://www.haomeiwen.com/subject/qbozqxtx.html