首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C 日誌輸出進階:上下文信息自動注入技巧

     編輯:關於C語言

標準宏與隱式參數對照表

宏/表達式格式含義
__func__%s當前函數名(C99 標準)
__LINE__%d源碼行號
__FILE__%s源文件完整路徑
__PRETTY_FUNCTION__%s含類名/簽名的函數名(GCC/Clang 擴展)
NSStringFromSelector(_cmd)%@當前選擇器名稱
NSStringFromClass([self class])%@當前對象類名
[[NSString stringWithUTF8String:__FILE__] lastPathComponent]%@源文件名(不含路徑)
[NSThread callStackSymbols]%@調用棧符號表(僅調試用)

最小侵入式日誌宏定義

#define DLog(fmt, ...) NSLog((@"%s:%d " fmt), __func__, __LINE__, ##__VA_ARGS__)

/* 使用示例 */
NSMutableArray *arr = [NSMutableArray array];
DLog(@"arr=%@", arr);          // 輸出:ViewController.m:42 arr=()
[arr addObject:@"foo"];
DLog(@"arr=%@", arr);          // 輸出:ViewController.m:44 arr=(foo)

生產環境建議

  • Release 構建定義 NSLog= 空宏或導向 os_log 系統日誌
  • 敏感信息(Token、密碼)務必在日誌中脫敏或過濾
  • 高頻調用路徑避免 callStackSymbols,性能開銷極大

進階:結構化日誌輸出 JSON

結合 NSJSONSerialization 將上下文字段序列化,便於 ELK/Splunk 等日誌平台索引分析。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved