本文章出自【碼同學軟件測試】
碼同學公眾號:自動化軟件測試,領取資料可加:Matongxue_8
碼同學抖音號:小碼哥聊軟件測試
Logcat命令行工具
Logcat是一個命令行工具,用於轉儲系統消息日志,包括設備拋出錯誤時的堆棧軌跡,以及從您的應用中使用 Log 類寫入的消息。
命令行語法
要通過 adb shell 運行 Logcat,一般用法如下:
[adb] logcat [<option>] ... [<filter-spec>] ...
您可以將 logcat 作為 adb 命令運行,也可以直接在模擬器或關聯設備的 shell 提示中運行。要使用 adb 查看日志輸出,請轉到您的 SDK platform-tools/ 目錄並執行以下命令:
adb logcat
要獲取 logcat 在線幫助,請啟動設備,然后執行以下命令:
adb logcat --help
您可以建立與設備的 shell 連接並執行以下命令:
adb shell
logcat
選 項
下面介紹了logcat的命令行選項
- -b :加載可供查看的備用日志緩沖區,例如events或radio。默認使用 main、system 和 crash 緩沖區集。請參閱查看備用日志緩沖區。
- -c, –clear :清除(清空)所選的緩沖區並退出。默認緩沖區集為main、system和crash。要清除所有緩沖區,請使用-b all -c。
- -e , –regex= :只輸出日志消息與匹配的行,其中是一個正則表達式。
- -m , –max-count= :輸出行后退出。這樣是為了與–regex配對,但可以獨立運行。
- –print :與–regex和–max-count配對,使內容繞過正則表達式過濾器,但仍能夠在獲得適當數量的匹配時停止。
- -d :將日志轉儲到屏幕並退出。
- -f :將日志消息輸出寫入 。默認值為stdout。
- -g, –buffer-size :輸出指定日志緩沖區的大小並退出
- -n :將輪替日志的數量上限設置為 。默認值為4。需要使用 -r 選項。
- -r :每輸出時輪替日志文件。默認值為16。需要使用-f選項。
- -s :相當於過濾器表達式‘*:S’;它將所有標記的優先級設為“靜默”,並用於放在可添加內容的過濾器表達式列表之前。要了解詳情,請轉到有關過濾日志輸出的部分。
- -v :設置日志消息的輸出格式。默認格式為threadtime。有關支持的格式列表,請參閱介紹控制日志輸出格式的部分。
- -D, –dividers :輸出各個日志緩沖區之間的分隔線。
- -c :清空(清除)整個日志並退出。
- -t :僅輸出最新的行數。此選項包括-d功能。
免費領取碼同學軟件測試課程筆記+超多學習資料+完整視頻+面試題,可加微信:Matongxue_8
免費領取碼同學軟件測試課程筆記+超多學習資料+完整視頻+面試題,可加微信:Matongxue_8
過濾日志輸出
1、日志消息的標記是一個簡短的字符串,指示消息所源自的系統組件(例如,“View”表示視圖系統)。
2、優先級是以下字符值之一(按照從最低到最高優先級的順序排列):
- V:詳細(最低優先級)
- D:調試
- I:信息
- W:警告
- E:錯誤
- F:嚴重錯誤
- S:靜默(最高優先級,絕不會輸出任何內容)
免費領取 碼同學軟件測試 課程筆記+超多學習資料+學習完整視頻,有需要的可以關注小編 + 轉發文章 + 私信「碼同學軟件測試」獲取資料。除此之外,還有一些小編整理的測試面試題,有需要的朋友同樣私信「碼同學軟件測試」獲取
通過運行 Logcat 並觀察每條消息的前兩列,您可以獲取系統中使用的帶有優先級的標記列表,格式為 /。
以下是使用 logcat -v brief output 命令獲取的簡短 Logcat 輸出的示例。它表明消息與優先級“I”和標記“ActivityManager”相關:
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
要將日志輸出降低到可管理的水平,您可以使用過濾器表達式限制日志輸出。
通過過濾器表達式,您可以向系統指明您感興趣的標記/優先級組合,系統會針對指定的標記抑制其他消息。
過濾器表達式采用 tag:priority … 格式,其中tag指示您感興趣的標記,priority指示可針對該標記報告的最低優先級。不低於指定優先級的標記的消息會寫入日志。
您可以在一個過濾器表達式中提供任意數量的 tag:priority 規范。一系列規范使用空格分隔。
以下是一個過濾器表達式的示例,該表達式會抑制除標記為“ActivityManager”、優先級不低於“信息”的日志消息,以及標記為“MyApp”、優先級不低於“調試”的日志消息以外的所有其他日志消息。
adb logcat ActivityManager:I MyApp:D *:S
上述表達式中最后一個元素 *:S 將所有標記的優先級設為“靜默”,從而確保系統僅顯示標記為“ActivityManager”和“MyApp”的日志消息。
使用 *:S 是確保日志輸出受限於您已明確指定的過濾器的絕佳方式,它可以讓過濾器充當日志輸出的“白名單”。
以下過濾器表達式顯示了優先級不低於“警告”的所有標記的所有日志消息:
adb logcat *:W
如果您從開發計算機運行 Logcat(相對於在遠程 adb shell 上運行),則也可以通過導出環境變量 ANDROID_LOG_TAGS 的值設置默認過濾器表達式:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
控制日志輸出格式
除標記和優先級外,日志消息還包含許多元數據字段。您可以修改消息的輸出格式,以便它們顯示特定的元數據字段。為此,您可以使用 -v 選項,並指定下列某一受支持的輸出格式。
- brief:顯示優先級、標記以及發出消息的進程的 PID。
- long:顯示所有元數據字段,並使用空白行分隔消息。
- process:僅顯示 PID。
- raw:顯示不包含其他元數據字段的原始日志消息。
- tag:僅顯示優先級和標記。
- thread::舊版格式,顯示優先級、PID 以及發出消息的線程的 TID。
- threadtime(默認值):顯示日期、調用時間、優先級、標記、PID 以及發出消息的線程的 TID。
- time:顯示日期、調用時間、優先級、標記以及發出消息的進程的 PID。
啟動 Logcat 時,您可以使用 -v 選項指定所需的輸出格式:
[adb] logcat [-v <format>]
以下示例顯示了如何生成輸出格式為 thread 的消息:
adb logcat -v thread
請注意,您只能使用 -v 選項指定一種輸出格式,但可以指定任意數量的有意義的修飾符。Logcat 會忽略沒有意義的修飾符。
格式修飾符
格式修飾符依據以下一個或多個修飾符的任意組合更改 Logcat 輸出。要指定格式修飾符,請使用 -v 選項,如下所示:
adb logcat -b all -v color -d
每個 Android 日志消息都有一個與之相關聯的標記和優先級。您可以將任何格式修飾符與以下任一格式選項進行組合:brief、long、process、raw、tag、thread、threadtime 和 time。
您可以通過在命令行中輸入 logcat -v –help 獲取格式修飾符詳細信息。
- color:使用不同的顏色來顯示每個優先級。
- descriptive:顯示日志緩沖區事件說明。此修飾符僅影響事件日志緩沖區消息,不會對其他非二進制文件緩沖區產生任何影響。事件說明取自 event-log-tags 數據庫。
- epoch:顯示自 1970 年 1 月 1 日以來的時間(以秒為單位)。
- monotonic:顯示自上次啟動以來的時間(以 CPU 秒為單位)。
- printable:確保所有二進制日志記錄內容都進行了轉義。
- uid:如果訪問控制允許,則顯示 UID 或記錄的進程的 Android ID。
- usec:顯示精確到微秒的時間。
- UTC:顯示 UTC 時間。
- year:將年份添加到顯示的時間。
- zone:將本地時區添加到顯示的時間。
查看備用日志緩沖區
Android 日志記錄系統為日志消息保留了多個環形緩沖區,而且並非所有的日志消息都會發送到默認的環形緩沖區。
要查看其他日志消息,您可以使用 -b 選項運行 logcat 命令,以請求查看備用的環形緩沖區。您可以查看下列任意備用緩沖區:
- radio:查看包含無線裝置/電話相關消息的緩沖區。
- events:查看已經過解譯的二進制系統事件緩沖區消息。
- main:查看主日志緩沖區(默認),不包含系統和崩潰日志消息。
- system:查看系統日志緩沖區(默認)。
- crash:查看崩潰日志緩沖區(默認)。
- all:查看所有緩沖區。
- default:報告 main、system 和 crash 緩沖區。
以下是 -b 選項的用法:
[adb] logcat [-b <buffer>]
以下示例顯示了如何查看包含無線裝置和電話相關消息的日志緩沖區。
adb logcat -b radio
此外,您也可以為要輸出的所有緩沖區指定多個 -b 標記,如下所示:
logcat -b main -b radio -b events
您可以指定一個 -b 標記,后跟緩沖區逗號分隔列表,例如:
logcat -b main,radio,events
END
免費領取碼同學軟件測試課程筆記+超多學習資料+學習完整視頻 ☞ 可加:Matongxue_8/關注碼同學公眾號
本文著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。