iOS 【美化NSLog】 關(guān)于NSLog的格式化輸出

對于任何一家公司的任何一個(gè)項(xiàng)目來說风皿,調(diào)試信息都是必不可少的疾牲,也就是說NSLog必定會頻繁使用嬉愧,但是NSLog所輸出的調(diào)試信息并不是任何情況都需要的乍丈。
一般來說剂碴,開發(fā)環(huán)境是需要我們使用NSLog來打印一些信息,方便我們處理數(shù)據(jù)诗赌、bug查找等,但是對于線上環(huán)境秸弛,也就是用戶使用的release環(huán)境的APP是不需要的铭若,如果強(qiáng)行輸出會造成性能上的問題,這并不是我們需要的递览。所以叼屠,幾乎所有的項(xiàng)目都會自定義NSLog宏。

絕大多數(shù)的NSLog宏都是僅輸出我們調(diào)用時(shí)最終需要使用的信息绞铃,代碼示例如下

#ifdef BETA
#define DebugNSLog(format, ...) NSLog(format, ## __VA_ARGS__)
#else
#define DebugNSLog(...) /* */
#endif

說明
#ifdef BETA指的是開發(fā)環(huán)境下镜雨,DebugNSLog == NSLog。#else指的是release環(huán)境下 DebugNSLog 是沒有實(shí)現(xiàn)的儿捧,也就是說BETA環(huán)境下荚坞,DebugNSLog等同于NSLog,而其他都視為無作用菲盾。
關(guān)于環(huán)境宏:BETA 是自己起的颓影,正常情況下,XCode 默認(rèn)兩種環(huán)境宏變量

  • Debug
  • Release
    如果你的項(xiàng)目是自定義的宏變量懒鉴,可以再下圖地方查看


    image.png

    這是我這里的配置诡挂,左邊是配置的環(huán)境,配置方法如下圖所示


    image.png

右側(cè)對應(yīng)的是 宏變量名稱和值临谱,比如說 Beta 這個(gè)環(huán)境下璃俗,他的環(huán)境宏為 BETA ,值為 1悉默,也就是說城豁,Beta 下, if (BETA = YES) 成立 ,因?yàn)?項(xiàng)目使用了 cocoapods 抄课,而cocoapods 有自己的 環(huán)境宏钮蛛,他默認(rèn)值都是 1鞭缭,也就是說,無論在那個(gè)環(huán)境下魏颓, cocoapods 都可用

按理來說岭辣,這樣的定義就已經(jīng)夠我們使用了,但是甸饱,當(dāng)我們各個(gè)地方都調(diào)用了DebugNSLog來進(jìn)行輸出的話沦童,勢必要配合斷點(diǎn)來查看我們當(dāng)前想要看到的輸出信息,否則APP啟動輸出了1千條信息叹话,你怎么能知道是你要看到的信息呢(其實(shí)我舉得這個(gè)例子不是特別好)偷遗,這種情況下我們可以調(diào)整宏定義,示例代碼如下

#ifdef BETA
#define DebugNSLog(formater,...) NSLog((@"函數(shù):%s\n" "代碼位置行數(shù): %d\n" formater),__FUNCTION__,__LINE__,##__VA_ARGS__)
#else
#define DebugNSLog(...) /* */
#endif

說明

  • __FUNCTION__是類的方法名稱驼壶,
  • __LINE__是輸出方法所在這個(gè)類的具體代碼行數(shù)氏豌,
  • ##__VA_ARGS__同普通打印宏一樣

##__VA_ARGS__
是一個(gè)可變參數(shù)的宏,這個(gè)可變參數(shù)的宏是新的C99規(guī)范中新增的热凹,目前似乎只有g(shù)cc支持(VC6.0的編譯器不支持)泵喘。宏前面加上##的作用在于,當(dāng)可變參數(shù)的個(gè)數(shù)為0時(shí)般妙,這里的##的作用是把前面多余的","去掉,否則會編譯出錯(cuò)纪铺。

使用最終效果

//代碼 viewDidLoad方法里調(diào)用
DebugNSLog(@"==調(diào)試==");

//控制臺輸出結(jié)果
2019-01-25 15:19:54.509437+0800 shequbanjing[12451:728498] 函數(shù):-[SQPlazaViewController viewDidLoad]
代碼位置行數(shù): 97
==調(diào)試==

補(bǔ)充
目前自己在用的寫法是:

#define DebugNSLog(formater,...) NSLog((@"\n====================\n >>> class: %s\n\n >>> method: %s\n\n" " >>> code line: %d 行\(zhòng)n\n >>> message: "  formater @"\n==================="),__FILE__,__FUNCTION__,__LINE__,##__VA_ARGS__)

最終輸出樣式

2019-02-26 15:43:05.104862+0800 sqbj-common-kit[99393:9668747] 
====================
 >>> class: /Users/BlackStar/Downloads/sqbj-common-kit/sqbj-common-kit/ViewController.m

 >>> method: -[ViewController viewDidLoad]

 >>> code line: 26 行

 >>> message: test Log
===================
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碟渺,隨后出現(xiàn)的幾起案子鲜锚,更是在濱河造成了極大的恐慌,老刑警劉巖苫拍,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芜繁,死亡現(xiàn)場離奇詭異,居然都是意外死亡绒极,警方通過查閱死者的電腦和手機(jī)浆洗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來集峦,“玉大人伏社,你說我怎么就攤上這事∷伲” “怎么了摘昌?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長高蜂。 經(jīng)常有香客問我聪黎,道長,這世上最難降的妖魔是什么备恤? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任稿饰,我火速辦了婚禮锦秒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喉镰。我一直安慰自己旅择,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布侣姆。 她就那樣靜靜地躺著生真,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捺宗。 梳的紋絲不亂的頭發(fā)上柱蟀,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音蚜厉,去河邊找鬼长已。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昼牛,可吹牛的內(nèi)容都是我干的术瓮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匾嘱,長吁一口氣:“原來是場噩夢啊……” “哼斤斧!你這毒婦竟也來了早抠?” 一聲冷哼從身側(cè)響起霎烙,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕊连,沒想到半個(gè)月后悬垃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甘苍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年尝蠕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片载庭。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡看彼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囚聚,到底是詐尸還是另有隱情靖榕,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布顽铸,位于F島的核電站茁计,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谓松。R本人自食惡果不足惜星压,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一践剂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娜膘,春花似錦逊脯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贾富,卻和暖如春歉眷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颤枪。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工汗捡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畏纲。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓扇住,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盗胀。 傳聞我的和親對象是個(gè)殘疾皇子艘蹋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe閱讀 1,265評論 0 10
  • 宏定義在C系開發(fā)中可以說占有舉足輕重的作用。底層框架自不必說票灰,為了編譯優(yōu)化和方便女阀,以及跨平臺能力,宏被大量使用屑迂,可...
    你好自己閱讀 1,054評論 0 5
  • 關(guān)于宏 宏定義在C系開發(fā)中可以說占有舉足輕重的作用浸策。底層框架自不必說,為了編譯優(yōu)化和方便惹盼,以及跨平臺能力庸汗,宏被大量...
    Cheriez閱讀 762評論 0 4
  • 寫在前面 在開發(fā)過程中很多時(shí)候需要閱讀第三方源碼,但是里面有大量的宏手报。沒有換行蚯舱,沒有著色,與平時(shí)寫的代碼完全不同掩蛤,...
    走進(jìn)科學(xué)閱讀 705評論 0 2
  • 轉(zhuǎn)載自O(shè)neV's Den 的宏定義的黑魔法 - 宏菜鳥起飛手冊 講的太詳細(xì)了枉昏,就像老師一樣,不是在講方法盏档,而是在...
    廚子閱讀 538評論 0 0