在我們實際開發(fā)中經(jīng)常要配合測試進行debug,在真機上測試的時候很難看到控制臺的輸出日志。真機連接在電腦上進行測試的時候還好,但是有些功能測試的時候可能需要程序殺死重新打開。比如在測試推送功能的時候,需要測試程序在殺死的情況下收到推送怎么處理。這個時候很難看到推送內(nèi)容是什么,要想根據(jù)推送內(nèi)容寫具體的處理邏輯就很不方便了。比如程序莫名其妙地閃退了,你想定位bug卻很難看到奔潰日志?比如想查看真機上沙盒中保存的某個值?再比如測試人員在測試過程中想查看當(dāng)前加載的網(wǎng)頁的完整鏈接(包括自己拼接的參數(shù)等等)???。這個時候是不是很想來一個不影響程序的正常運行又可以實時查看打印日志的輪子???
這個小工具實現(xiàn)了以下功能:
- 每次程序啟動就新建一個以當(dāng)前時間命名的日志文件。
- 自定義打印日志的方法,調(diào)用后將把日志記錄于文件中。
- 重定向NSLog輸出日志到文件中,這樣你就不用替換到你項目中已有的NSLog()代碼啦。
- 重定向程序奔潰日志到文件中。
- 自動根據(jù)當(dāng)前設(shè)備信息選擇要不要記錄日志的同時把日志打印到控制臺。
- 方便查看當(dāng)前沙盒中保存的鍵值對。
看完介紹是不是心情有點小激動甚至想“來一發(fā)”???
使用方法
- 將DebugWindow文件夾下的類引入你的項目。
- 在程序啟動時調(diào)用
[YLDebugWindow startDebug]方法開啟日志記錄。 - 如果需要自定義打印日志,調(diào)用YLLog()方法,你也可以根據(jù)自己實際情況修改該方法。
注意事項
- 建議在往沙盒中存數(shù)據(jù)的時候?qū)⑺衚ey都帶上特定前綴,比如我這里是"kYL"開頭的,這樣在獲取沙盒中鍵值對的時候方便只看自己保存的鍵值對。
- 默認在模擬器上和真機連接在電腦上的時候是不把NSLog輸出和異常輸出日志記錄到文件中的,如果需要在模擬器上看效果,可以修改YLLogTool的
needRedirect方法。
目前存在的問題以及待實現(xiàn)功能
- 問題:重定向程序原有的NSLog輸出日志中,中文顯示亂碼問題。目前沒有找到解決辦法,建議盡量用英文輸出。??
- 待實現(xiàn):動態(tài)更改沙盒中保存的鍵值對來方便調(diào)試。
效果圖

參考
總結(jié)
在真機上測試的時候快速查看日志,這一直是我實際開發(fā)中的一個需要。這個小工具是最近一周工作之余研究的結(jié)果,非常感謝網(wǎng)絡(luò)上已有的技術(shù)文章對我的幫助和啟發(fā)。如有bug或者其他建議,請在DebugWindow反饋給我,謝謝。
更新記錄
---2017-05-11---
- 使用UIWebView替代QLPreviewController來預(yù)覽日志文件。
- 解決中文亂碼問題。
- 在日志文件中搜索并高亮字符串。
- 增刪改查當(dāng)前沙盒中保存的鍵值對,方便調(diào)試。