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]);

你可能感兴趣的:(iOS打印log)