iOS打印log

1. 使用宏定义进行打印###

#define OPEN_LOG
#ifdef  OPEN_LOG
//__LINE__ 代表行数,  __PRETTY_FUNCTION__ 代表当前的函数名
#define DLOG(fmt, ...)      NSLog((@"[Line %d] %s\n" fmt), __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__);
#else
#define DLOG(fmt, ...)
#endif

2. 使用格式化字符串进行打印###

在SDK中可能无法使用第一种打印方式, 可以使用这种方式控制打印,

//NS_FORMAT_FUNCTION(1,2)中的1 代表格式化字符串所在的位置, 2代表着从第二个位置开始检查
-(void)log:(NSString *)logFormat,... NS_FORMAT_FUNCTION(1,2){
    if(!openlog){
        return;
    }
    va_list arglist;
    va_start(arglist, logFormat);
    NSString *outStr = [[NSString alloc] initWithFormat:logFormat arguments:arglist];
    NSLog(@"打印log: %@", outStr);
    va_end(arglist);
}

3. 打印调用堆栈###

NSLog(@"%@", [NSThread  callStackSymbols]);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,914评论 18 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,210评论 30 471
  • 今天的课程是讲软件的使用,这个工具嘛,熟能生巧,实在不知道写点啥笔记~ 就总结下最近两周看的书吧《启示录》,写了篇...
    大海啊阅读 700评论 0 1
  • “卧槽,这么多异火,二十三种,你甘萧爷爷都不知道该选哪两种,或三种异火……” “系统,来来来,帮我推荐一下,还买哪...
    千笑半昕阅读 848评论 0 0