Android Studio 的「Logcat」視窗可即時顯示裝置記錄,協助您對應用程式進行偵錯。這些記錄包括您以 Log
類別加到應用程式中的訊息、在 Android 執行的服務的訊息,或在執行垃圾收集等作業時顯示的系統訊息等。只要應用程式擲回例外狀況,Logcat 就會顯示訊息,然後提供內有該行程式碼連結的相關堆疊追蹤記錄。
開始使用 Logcat 視窗
如要查看應用程式的記錄訊息,請執行下列步驟:
- 開啟 Android Studio,在實體裝置或模擬器上建構並執行應用程式。
- 依序選取選單列中的「View」>「Tool Windows」>「Logcat」。
根據預設,Logcat 會捲動至底端。您只需在「Logcat」檢視畫面中按一下,或向上滾動滑鼠滾輪,即可關閉這項功能。如要重新開啟,請按一下工具列中的「Scroll to the End」圖示 。您也可以使用工具列清除、暫停或重新啟動 Logcat。
圖 1. Logcat 會設定記錄格式,方便您掃描實用資訊 (例如標記和訊息),以及找出不同類型的記錄 (例如警告和錯誤)。
如何閱讀記錄
每筆記錄都含有日期、時間戳記、程序與執行緒 ID、標記、套件名稱、優先順序,以及相關聯的訊息。不同標記有各自專屬的顏色,有助於識別記錄類型。記錄項目的優先順序可能是 FATAL
、ERROR
、WARNING
、INFO
、DEBUG
或 VERBOSE
。
舉例來說,以下記錄訊息的優先順序是 DEBUG
,並設有 ProfileInstaller
標記:
2022-12-29 04:00:18.823 30249-30321 ProfileInstaller com.google.samples.apps.sunflower D Installing profile for com.google.samples.apps.sunflower
設定記錄檢視畫面
標準的記錄檢視畫面會顯示每筆記錄的日期、時間、程序與執行緒 ID、標記、套件名稱、優先順序,以及相關聯的訊息。根據預設,訊息行不會納入記錄檢視畫面中,但您可以使用「Logcat」工具列中的「Soft-Wrap」 選項調整這項設定。
您也可以點選「Logcat」工具列中的「Configure Logcat Formatting Options」圖示 ,切換至預設顯示資訊較少的「Compact」檢視畫面。
如要進一步設定想要顯示的資訊量,請選取「Modify Views」,然後選擇是否要顯示時間戳記、標記、程序 ID 或套件名稱。
變更色彩配置
如要變更色彩配置,請依序前往「Android Studio」>「Settings」>「Editor」>「Color Scheme」。如要變更記錄檢視畫面的色彩配置,請選取「Android Logcat」。如要變更篩選器的色彩配置,請選取「Logcat Filter」。
其他設定選項
如需其他設定選項,請依序前往「Android Studio」>「Settings」>「Tools」>「Logcat」。您可在此選擇 Logcat 週期緩衝區空間、新 Logcat 視窗的預設篩選器,以及是否要新增歷史記錄中的篩選器來支援自動完成功能。
在多個視窗中使用 Logcat
您可利用分頁輕鬆在不同裝置或查詢之間切換。只要點選「New Tab」圖示 即可建立多個 Logcat 分頁。在分頁標籤上按一下滑鼠右鍵,則可重新命名及重新排列分頁。
此外,您可以在分頁中分割檢視畫面,方便比較兩組記錄。如要建立分割畫面,請在記錄檢視畫面中按一下滑鼠右鍵,或按一下工具列中的「Split Panels」選項,然後選取「Split Right」或「Split Down」。如要關閉分割畫面,請按一下滑鼠右鍵,然後選取「Close」。每個分割畫面都可讓您設定專屬的裝置連線、檢視選項和查詢。
圖 2. 在 Android Studio 中分割「Logcat」視窗。
您可以從「Logcat」工具列中捲動到記錄的尾端,也可以點選特定行以持續顯示該行。
使用鍵/值搜尋查詢記錄
在 Android Studio 中,您可以直接透過主查詢欄位產生鍵/值搜尋。這個查詢系統可提供精準的查詢結果,也能根據鍵/值排除記錄。雖然您可以選擇使用規則運算式,但這在查詢時並非必要。如要查看建議,請在查詢欄位中按下 Ctrl
+ Space
鍵。
圖 3. 在查詢欄位中按下 Ctrl
+ Space
鍵,即可顯示建議的查詢清單。
以下列舉幾個可在查詢中使用的鍵:
tag
:比對記錄項目的tag
欄位。package
:比對記錄應用程式的套件名稱。process
:比對記錄應用程式的程序名稱。message
:比對記錄項目的訊息部分。level
:比對指定或更嚴重的記錄層級,例如DEBUG
。age
:比對項目的時間戳記是否為近期。值的指定方式是在數字後面加上代表時間單位的字母:s
代表秒數、m
代表分鐘數、h
代表小時數,d
則代表天數。例如,age: 5m
只會篩選出過去 5 分鐘內記錄下來的訊息。
否定和規則運算式
以下欄位支援否定和規則運算式比對功能:tag
、package
、message
和 line
。
只要在欄位名稱前方加上 -
,即可表示否定。例如,-tag:MyTag
會比對 tag
不含 MyTag
字串的記錄項目。
如要表示以規則運算式比對,則請在欄位名稱後方加上 ~
,例如 tag~:My.*Tag
。
您可以合併使用否定和規則運算式修飾符,例如 -tag~:My.*Tag
。
邏輯運算子和括號
查詢語言支援以 &
和 |
與括號表示的 AND
和 OR
運算子。例如:
(tag:foo | level:ERROR) & package:mine
請注意,系統會強制執行一般運算子的優先順序,因此以下運算式:
tag:foo | level:ERROR & package:mine
會評估為:
tag:foo | (level:ERROR & package:mine)
隱式邏輯運算子
如未套用邏輯運算子,查詢語言會自動將多個具有相同鍵的非否定 key-value
篩選字詞評估為 OR
,而其他所有字詞則評估為 AND
。
例如:
tag:foo tag:bar package:myapp
會評估為:
(tag:foo | tag:bar) & package:myapp
但是:
tag:foo -tag:bar package:myapp
會評估為:
tag:foo & -tag:bar & package:myapp
如果多個查詢字詞以空白字元分隔,而且沒有邏輯運算子,系統會以低優先順序 AND 運算這些字詞。例如,字詞 foo bar tag:bar1 | tag:bar2
等同於 'foo bar' & (tag: bar1 | tag: bar2)
。
特殊查詢
package:mine
package 鍵支援特殊值 mine
。這個特殊值會比對開放專案內的所有套件名稱。
level
level
查詢會比對 Logcat 訊息的記錄層級,這些記錄項目的層級大於或等於查詢層級。
舉例來說,level:INFO
會比對記錄層級為 INFO
、WARN
、ERROR
或 ASSERT
的任何記錄項目。請注意,層級沒有大小寫之分,有效層級包括:VERBOSE
、DEBUG
、INFO
、WARN
、ERROR
和 ASSERT
。
age
age
查詢會根據項目的時間戳記比對項目,格式為 age:<number><unit>
,其中
<number>
為整數<unit>
是s
、m
、h
和d
(秒、分、小時和天) 之一。
以下列清單為例,age
查詢會比對時間戳記落在其值所指範圍內的記錄訊息。例如,查詢 age:5m
會比對時間戳記落在前 5 分鐘內的項目。
age:30s
age:5m
age:3h
age:1d
請注意,時間戳記會與主機的時間戳記比較,而不是已連線的裝置。如果裝置的時間設定有誤,這項查詢可能無法正常運作。
is
鍵
您可以透過以下方式使用 is
鍵:
is:crash
會比對代表應用程式當機 (原生或 Java) 的記錄項目。is:stacktrace
會比對代表任何類似 Java 堆疊追蹤的記錄項目,無論記錄層級為何都一樣。
name
鍵
name
鍵可讓您為已儲存的篩選器提供專屬名稱,方便在篩選記錄下拉式選單中加以識別。儘管多次指定 name
不會導致發生錯誤,但 IDE 在查詢中只會使用最後指定的 name
值。
查看查詢記錄
按一下查詢欄位旁邊的「Show history」圖示 即可查看查詢記錄。如要將特定查詢設為常用項目,使其持續顯示在所有 Studio 專案的清單頂端,請按一下該查詢旁邊的星號。您也可以使用 name:
鍵,讓常用查詢更易於辨識。詳情請參閱「特殊查詢」一節。
圖 4. 按一下查詢旁邊的星號即可將其設為常用項目。
追蹤應用程式當機和重新啟動的記錄
如果 Logcat 偵測到應用程式程序已停止並重新啟動,就會在輸出內容中顯示訊息,例如 PROCESS ENDED
和 PROCESS STARTED
。重新啟動 Logcat 會保留工作階段設定,例如分頁分割、篩選器和檢視選項,方便您繼續執行工作階段。
圖 5. 應用程式程序重新啟動時,Logcat 會顯示訊息,說明該程序結束後接著啟動。