Android Studio 如何添加和查看日志
前面的小節(jié)我們介紹了開發(fā)者選項,從本小結(jié)我們學(xué)習(xí)如何使用添加和查看日志。
[toc]
1. 添加日志
Android 通過 Log 類,我們可以創(chuàng)建日志消息,這些消息會顯示在 Logcat 中。一般來說,我們應(yīng)使用以下日志方法,這些方法按照優(yōu)先級從高到低(或者從最簡略到最詳細(xì))的順序列示:
-
Log.e(String, String)(錯誤)
-
Log.w(String, String)(警告)
-
Log.i(String, String)(信息)
-
Log.d(String, String)(調(diào)試)
-
Log.v(String, String)(詳細(xì))
除開發(fā)期間外,其他任何時候都絕不應(yīng)將詳細(xì)日志編譯到我們的應(yīng)用中。雖然會編譯調(diào)試日志,但會在運(yùn)行時將其去掉,而錯誤、警告和信息日志會始終保留。
對于每種日志方法,第一個參數(shù)都應(yīng)是唯一標(biāo)記,第二個參數(shù)都應(yīng)是消息。系統(tǒng)日志消息的標(biāo)記是一個簡短的字符串,指示消息所源自的系統(tǒng)組件(例如 ActivityManager)。標(biāo)記可以是我們認(rèn)為有用的任何字符串,例如當(dāng)前類的名稱。
一種比較好的做法是,在要用于第一個參數(shù)的類中聲明 TAG 常量。例如,我們可以按如下方式創(chuàng)建一條信息日志消息:
private static final String TAG = "MyActivity";
...
Log.i(TAG, "MyClass.getView() — get item number " + position);
Tips:長度超過 23 個字符的標(biāo)記名稱在 logcat 輸出中會被截斷。
2. 查看日志
Android Studio 中的 Logcat 窗口會顯示系統(tǒng)消息,例如在進(jìn)行垃圾回收時顯示的消息,以及使用 Log 類添加到應(yīng)用的消息。此窗口可以實(shí)時顯示消息,也可以保留歷史記錄,因此我們可以查看較早的消息。
2.1 Logcat 窗口
Logcat 窗口會顯示所選應(yīng)用(從窗口頂部的下拉列表中選擇)的日志消息,如下圖所示。
Logcat 工具欄中提供以下按鈕:
-
Clear logcat:點(diǎn)擊此按鈕可以清除顯示的日志;
-
Scroll to the end:點(diǎn)擊此按鈕可以跳轉(zhuǎn)到日志底部并查看最新的日志消息。如果我們先點(diǎn)擊此按鈕,然后點(diǎn)擊日志中的某一行,則視圖會在相應(yīng)位置暫停滾動;
-
Up the stack trace 和 Down the stack trace:點(diǎn)擊相應(yīng)按鈕可以在日志的堆棧軌跡中進(jìn)行上下導(dǎo)航,從而選擇輸出的異常中顯示的后續(xù)文件名(以及在編輯器中查看相應(yīng)行號)。這與我們在日志中點(diǎn)擊某個文件名時的行為相同;
-
Use soft wraps:點(diǎn)擊此按鈕可以啟用換行并防止水平滾動(盡管所有非間斷字符串仍然需要進(jìn)行水平滾動);
-
Print:點(diǎn)擊此按鈕可以輸出 logcat 消息。在顯示的對話框中選擇輸出偏好設(shè)置后,我們還可以選擇將其保存為 PDF 格式;
-
Restart:點(diǎn)擊此按鈕可以清除日志并重啟 logcat。與 Clear logcat 按鈕不同,此按鈕可以恢復(fù)并顯示之前的日志消息,因此當(dāng) Logcat 無響應(yīng)而我們又不想失去日志消息時,此按鈕是最有用的;
-
Logcat header:點(diǎn)擊此按鈕可以打開 Configure Logcat Header 對話框,在該對話框中,我們可以自定義各個 logcat 消息的外觀,例如是否顯示日期和時間;
-
Screen capture:點(diǎn)擊此按鈕可以截取屏幕截圖;
-
Screen record:點(diǎn)擊此按鈕可以錄制設(shè)備屏幕的視頻(時長不超過 3 分鐘)。
2.2 設(shè)置日志級別
我們可以通過設(shè)置日志級別來控制 logcat 中顯示的消息數(shù)量。我們可以顯示所有消息,也可以僅顯示指示最嚴(yán)重情況的消息。無論日志級別設(shè)置如何,logcat 都會繼續(xù)收集所有消息。此設(shè)置僅決定 logcat 顯示什么。
在 Log level 菜單中,選擇以下值之一:
-
Verbose:顯示所有日志消息(默認(rèn)值)。
-
Debug:顯示僅在開發(fā)期間有用的調(diào)試日志消息,以及此列表中較低的消息級別。
-
Info:顯示常規(guī)使用情況的預(yù)期日志消息,以及此列表中較低的消息級別。
-
Warn:顯示尚不是錯誤的潛在問題,以及此列表中較低的消息級別。
-
Error:顯示已經(jīng)引發(fā)錯誤的問題,以及此列表中較低的消息級別。
-
Assert:顯示開發(fā)者預(yù)計絕不會發(fā)生的問題。
2.3 搜索 logcat 消息
要搜索 logcat 中當(dāng)前顯示的消息,請執(zhí)行以下操作:
-
如果我們想要使用正則表達(dá)式搜索模式,請選擇 Regex。
-
在搜索字段中輸入字符序列。Logcat 輸出會相應(yīng)地顯示更改。
-
按 Enter 鍵以在此會話期間將搜索字符串保存到菜單中。
-
要重復(fù)搜索,請從搜索菜單中選擇。根據(jù)需要選擇或取消選擇 Regex。
2.4 過濾 logcat 消息
將日志輸出減少至可管理水平的一種方法是,使用過濾器施加限制。
要定義并應(yīng)用過濾器,請執(zhí)行以下操作:
-
在過濾器菜單中,選擇一個過濾選項:
-
Show only selected application:僅顯示通過應(yīng)用代碼生成的消息(默認(rèn)選項)。Logcat 使用正在運(yùn)行的應(yīng)用的 PID 來過濾日志消息。
-
No Filters:不應(yīng)用過濾器。無論我們選擇哪個進(jìn)程,logcat 都會顯示設(shè)備中的所有日志消息。
-
Edit Filter Configuration:創(chuàng)建或修改自定義過濾器。例如,我們可以創(chuàng)建一個過濾器,以同時查看兩個應(yīng)用中的日志消息。
-
-
如果選擇了 Edit Filter Configuration,還需要創(chuàng)建或修改過濾器,在 Create New Logcat Filter 對話框中指定過濾器參數(shù):
-
Filter Name:輸入要設(shè)定的過濾器的名稱,或者從左側(cè)窗格中進(jìn)行選擇以修改現(xiàn)有過濾器。名稱只能包含小寫字符、下劃線和數(shù)字。
-
Log Tag:(可選)指定標(biāo)記。
-
Log Message:(可選)指定日志消息文本。
-
Package Name:(可選)指定軟件包名稱。
-
PID:(可選)指定進(jìn)程 ID。如需了解詳情,請參閱 Logcat 消息格式。
-
Log Level:(可選)選擇日志級別。
-
Regex:選擇此選項可以為相應(yīng)參數(shù)使用正則表達(dá)式語法。
-
如果我們認(rèn)為并沒有看到想要檢查的日志消息,請嘗試選擇 No filters 并搜索特定日志消息。
3. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了添加日志和查看日志。本節(jié)課程的重點(diǎn)如下:
- 掌握如何添加日志;
- 掌握如何查看日志。