Swift 自定義 log

獲取打印所在文件

let file = (__FILE__ as NSString).lastPathComponent

獲取打印所在的方法

let funcName = #function

獲取打印所在行數

let lingNumber = #line

print("\(file):[\(funcName)](\(#line))") 

定義一個全局函數打印

//這里<T> 表示動態類型,傳過來的是什么類型就是什么類型,<T>中的 T 只是一種寫法 T 也可以被替換成任意字母或字符串
func Log<T>(message: T, file: String = #file, funcName: String = #function, lineNumber: Int = #line) {
        let fileName = (file as NSString).lastPathComponent
    print("\(fileName):(\(lineNumber))-\(message)")
}

  • Xcode 中我們修改運行的是 debug 包還是 release 包可以按照下圖修改
0.png

1.png
  • 由于 swift 中沒有宏,不能根據宏來判斷是 DEBug 還是 release 模式
    所以,如果要判斷是 DEBug 還是 Release 模式可以根據下圖


    2.png

這樣之后就可以根據給 log 方法加一個條件編譯,讓它在 debug 模式下輸出 log 信息

func Log<T>(message: T, file: String = #file, funcName: String = #function, lineNumber: Int = #line) {
    #if ABCD
        let fileName = (file as NSString).lastPathComponent
    print("\(fileName):(\(lineNumber))-\(message)")
    #endif
}

給 release 模式添加標識符也是一樣 -D 跟一串字符串

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift中打印不像OC那樣每次打印系統會自己打印出時間和所在類名,所以在swift中要自己封裝.自定義Log要用...
    Mortimey_yt閱讀 427評論 0 1
  • NO.1 先了解下 Debug 和 Release 的區別 Release是發行版本,比Debug版本有一些優化,...
    浮橋小麥閱讀 894評論 0 0
  • 在開發過程中,打印Log進行調試是必不可少的,但是在上線之后這些Log會很消耗性能資源,同時我們又想在Log中顯示...
    Vonkin閱讀 4,163評論 0 3
  • 1 相關知識點 (1)獲取所在文件 (2)獲取在的方法 (3)獲取在的行數 2 自定義log (1)在AppDel...
    小碼碼閱讀 491評論 1 3
  • 在項目開發中調試程序或者確定一些數據時要經常用到打印,那我們如何使打印用起來更方便,這需要自定義打印。下面我們開始...
    HeartPower閱讀 322評論 0 1