iOS打印log

1. 使用宏定義進行打印###

#define OPEN_LOG
#ifdef  OPEN_LOG
//__LINE__ 代表行數(shù),  __PRETTY_FUNCTION__ 代表當前的函數(shù)名
#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]);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,810評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,199評論 30 471
  • 今天的課程是講軟件的使用,這個工具嘛,熟能生巧,實在不知道寫點啥筆記~ 就總結下最近兩周看的書吧《啟示錄》,寫了篇...
    大海啊閱讀 699評論 0 1
  • “臥槽,這么多異火,二十三種,你甘蕭爺爺都不知道該選哪兩種,或三種異火……” “系統(tǒng),來來來,幫我推薦一下,還買哪...
    千笑半昕閱讀 839評論 0 0