app測試日誌如何獲取,logcat值得擁有

2022-01-10 自動化軟體測試

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功能

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

學習安排上!

▲  大量企業真實性能調優案例  ▲  

50頁獨家實戰性能瓶頸分析及案例總結

關注下方公眾號免費領取

第一步:點擊頂部藍字「自動化軟體測試」,進入公眾號主頁

第二步:點擊右上角「···」

第三步:點擊「設為星標」


萬物需要陽光,生活需要方向😁

 👇👇👇

相關焦點

  • logcat抓取app日誌詳細方法
    一.logcat抓log方法:adb logcat命令,可以加條件過濾AD:兼職軟體測試工程師月入5000元,點擊左下角閱讀原文了解詳情
  • 噓,我已經瞞著開發解鎖APP日誌文件抓取及分析啦!
    也列舉了APP通用測試用例還解答了APP常見的問題並且搭建好ADB環境熟知基本的ADB命令今天介紹Android日誌文件抓取及分析主要包括APP日誌查看工具APP日誌文件分類APP日誌文件抓取詳解APP日誌相關面試題分享
  • APP閃退分析及Crash日誌獲取
    所以APP閃退可能會導致用戶的流失,所以作為研發、測試人員應該把APP的crash率降到最低。所以在測試的過程中也要特別注意閃退。說了那麼多,那麼尤其對於測試人員來說,遇到crash(或偶發)應該怎麼辦呢?
  • 【Android測試】之LogCat命令行(一)
    前言  上一篇(【Android測試】之LogCat的認識和使用)講的是如果在eclipse中的Logcat進行Log的查看和過濾,很多的時候我們面臨著這樣的問題:  如果你的app需要在室外才可以運行(例如使用地圖軟體中的導航),室外可能不方便去攜帶電腦,此時你又想保存log,那麼你該如何去做呢?本節就來解決這個問題。
  • 關於面試總結13-app測試面試題
    8.app對於不穩定偶然出現anr和crash時候你是怎麼處理的?9.app的日誌如何抓取?10.你平常會看日誌嗎, 一般會出現哪些異常(Exception)?1.什麼是activity什麼是activity,這個前兩年出去面試APP測試崗位,估計問的最多了,特別是一些大廠,先問你是不是做過APP測試,那好,你說說什麼是activity?
  • 17道APP測試面試題分享帶參考答案
    參考答案:數據——》從哪裡來(入口)——》到哪裡去(出口)——》資料庫(檢驗數據的正確性)2、你認為app測試過程中,相對於web,要更多注意哪些測試點?或者說app測試和web測試有哪些不同之處?參考答案:adb logcat | find "com.sankuai.meituan" >d:\hello.txt也可以用ddms抓取,手機連上電腦,打開ddms工具,或者在Android Studio開發工具中,打開DDMS3、你平常會看日誌嗎, 一般會出現哪些異常(Exception)?
  • 高級自動化測試常見面試題(Web、App、接口)
    (app的11 大測試點)服務端有接口測試、性能測試、安全測試。8.如何判斷 app 的 bug 是客戶端問題還是後臺問題這個要根據業務來,一般數據的問題前端的問題多些,一般做法是有問題提給前端開發, 他們知道是他們自己的問題還是後臺返回的數據問題。9.安卓中如何取出日誌信息?
  • 安卓測試常用的 ADB 命令大全,非常全!
    //刪除名字為xxx的文件夾及其裡面的所有文件#rm xxx //刪除文件xxx#rmdir xxx //刪除xxx的文件夾30、點亮屏幕adb shellinput keyevent 8231、日誌相關:日誌命令行顯示Log複製代碼 代碼如下:adb logcat
  • 必須掌握的ADB命令 | 讓你的測試事半功倍
    對於我們了解當前系統的狀態,以及在測試過程中獲取app對系統的影響提供了數據依據。1、adb shell dumpsys cpuinfo用於列印當前手機或模擬器中cpu的相關信息。合理的使用dumpsys系列的命令,能夠有效的獲取當前系統或app的信息, 在性能測試中使用的尤為多,想要學好移動端的性能測試,掌握這個命令是必不可少的。>>>>  adb logcat該命令用於查看和跟蹤系統日誌,一般在調試中經常用到,病嘗嘗與過濾命令grep一起調用。
  • iOS App 連續閃退時如何上報 crash 日誌
    App 無限循環 crash 時上報crash 日誌上報時,會發送網絡請求,如果請求成功之前 App 又發生 crash 該如何處理?用戶甚至會陷入無限循環的 crash 中。這篇文章介紹下出現第二種情況時,如何準確上報 crash 日誌。首先我們需要一種比較可靠的方式,可以在 app 啟動時判斷上次是否發生了啟動 crash。
  • APP兼容性測試如何測試?
    數據兼容性(不同版本間的數據兼容);藍牙設備兼容性測試 (如果是一款使用藍牙的應用);存儲卡兼容性測試(比如文件管理器);第三方軟體兼容衝突(比如輸入法衝突)。APP兼容性如何開展?①測試過程中根據兼容測試矩陣在不同測試輪次中切換不同的測試機進行測試並記錄。
  • 中高級APP測試工程師必備,月薪15K+
    (自由發揮)  2.3、你認為app測試過程中,相對於web,要更多注意哪些測試點?或者說app測試和web測試有哪些不同之處?一開始運行再進行加載;  6、前臺主動發出請求,後臺資料庫中是否存在相應的數據同時包括數據的關聯性(商家的會員進行下訂單,資料庫中生成一條訂單的記錄的同時,生成一條積分記錄,該會員的積分進行相應的變化);  7、手機app網絡環境測試重點:主要是針對2G、3G、4G、wifi三種網絡環境進行測試 ;  8、手機app兼容性測試:主要是針對android各個系統版本進行測試,及測試屏幕解析度進行測試
  • 【松勤軟體測試基礎】APP常見測試點總結
    b.第三方雲測試的解決方法。c.整理不兼容的地方,然後去分析app總可能不兼容的代碼。對技術能力的要求比較高,前期也需要花費不少的時間。d.利用友盟等第三方統計平臺獲得應用對應的TOP N 的記性重點進行測試。8.客戶端側性能測試偏重客戶端側CPU、MEM、流量、電量以及客戶端在不同網絡環境下響應速度等等。
  • APP常見測試點總結!速速收藏學習
    b.第三方雲測試的解決方法。c.整理不兼容的地方,然後去分析app中可能不兼容的代碼。對技術能力的要求比較高,前期也需要花費不少的時間。d.利用友盟等第三方統計平臺獲得應用對應的TOP N 的記性重點進行測試。
  • 當一個測試工程師準備找工作,需要準備什麼?
    這些也可以在面試過程中逐漸清晰,你可能在這些元素裡需要接受一些東西放棄一些東西,要清楚完美的工作的是不存在的,大部分人裡只能從自己能力範圍裡選擇一個相對好的,當然能力越強,可選範圍就越大  總結提煉自己的經歷  你要審視一下自己的過去的工作,了解自己的優勢在哪裡,了解哪些是你對項目對公司做出的比較大的貢獻,哪些項目值得一說
  • APP壓力穩定性測試之Monkey入門
    Monkey是一個命令行工具,使用安卓調試橋(adb)來運行它,模擬用戶觸控螢幕幕、滑動Trackball、按鍵等隨機事件流來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常,可以根據獲取的log信息進行修復。
  • APP測試的Monkey事件詳解
    現在的手機幾乎都沒有軌跡球,但軌跡球事件中包含曲線滑動操作,如果被測程序需要曲線滑動時可以選用此參數。可通過--pct-trackball參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到:屏幕旋轉事件是一個隱藏事件,在Android官方文檔中並沒有記錄這個事件。它其實是模擬的Android手機的橫屏和豎屏切換。
  • 看測試前輩如何詳解shell 管理 monkey 壓力測試(文末有福利!)
    控制腳本:shell腳本控制流程邏輯,設備端後臺運行(&符後臺執行)優勢:- 組合不同monkey腳本進行整體測試;- 設備端獨立完成;- 可連接線充避免手機電量不足;- 可以對手機狀態和app狀態進行控制;- 可同步進行log分析處理;- 等多進程操作。