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