在開發Android應用程序時,經常要用到日誌查看工具Logcat。Logcat工具內置在Android系統中,可以通過Eclipse的窗口或主機上的adb logcat命令來查看運行在模擬機/真機上的日誌。關於Logcat的學習,我把它分成了兩部分內容:一部分是如何使用,分爲在GUI界面下的使用和直接使用adb logcat;另一部分是Logcat源代碼簡要分析。本文將重點介紹如何使用Logcat。
怎樣過濾日誌?
沒有過濾的Logcat,All message(no filters)顯示的信息如下:
Level | Time | PID | TID | Application | Tag | Text |
---|---|---|---|---|---|---|
日誌級別 | 時間 | 進程id | 線程id | 應用程序名(包名) | 過濾標籤 | 輸出信息 |
-
方案 I. 定製日誌過濾器
可以選擇日誌級別,也可以設置過濾標籤,例如在by Log Tag中輸入正則表達式:
^(?!.*(MyTag)).*$
MyTag表示需要過濾的Tag黑名單,例如:
^(?!.*(System.err|dalvik|MyTag1|Mytag2|…|MyTagn)).*$
方案 II. 在Logcat窗口過濾
直接在Logcat窗口的Search for message欄輸入正則表達式,MyTag表示需要過濾的Tag黑名單:
tag:^(?!.*(MyTag1|MyTag2|…|MyTagn)).*$
方案 III. 使用adb logcat
最簡單的就是使用adb通過管道使用grep過濾,通過grep強大的正則表達式匹配某段字符串,例如:
adb logcat | grep MyFilterInfo
MyFilterInfo是需要過濾的log白名單(和Tag黑名單不同,log白名單可以過濾所有欄而不僅僅是Tag欄)
怎樣保存日誌?
和過濾日誌一樣,保存也分爲Eclipse下使用Logcat窗口和直接使用adb logcat指令
方案 I. (Eclipse下)選中要保存的日誌並點擊保存按鈕
方案 II. adb logcat
該方法是阻塞的,即只要不關閉adb,MyLog文件中的日誌就會實時更新並保存。查看文件可以通過Mac下的控制檯.app。
adb logcat > MyLog
在交互式的shell環境下保存日誌,方法非阻塞,日誌也可以通過文本編輯.app查看,所以也可以保存成MyLog.txt
adb shell logcat > MyLog
以上方法,日誌的保存路徑都可以自定義,例如
adb logcat > /Users/Elsa/Eclipse/MyLog
adb logcat 還有更多強大的功能,例如設置日誌輸出格式、清空日誌緩存、輸出最近日誌、過濾指定標籤/等級日誌等。Ubuntu下使用adb logcat顯示Android日誌 一文給出了許多用法示例,想深入學習的話可以參考。