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 會顯示訊息,說明該程序已結束,接著已啟動。