1. 程式人生 > >adb log 命令介紹

adb log 命令介紹

1.android log系統

image

2.logcat介紹

logcat是android中的一個命令列工具,可以用於得到程式的log資訊

log類是一個日誌類,可以在程式碼中使用logcat打印出訊息

  • 常見的日誌紀錄方法包括:

方法

描述

v(String,String) (vervbose) 顯示全部資訊
d(String,String)(debug) 顯示除錯資訊
i(String,String)(information) 顯示一般資訊
w(String,String)(waning) 顯示警告資訊
e(String,String)(error) 顯示錯誤資訊

例如:

//開發過程中獲取log
Log.i("MyActivity","MyClass.getView() - get item number"+position);
//adb獲取log
adb logcat

adb logcat輸出的日誌格式如下:

I/ActivityManager( 1754): Waited long enough for: ServiceRecord{2b24178c u0 com.google.android.gms/.checkin.CheckinService}

3.logcat命令格式

語法格式:

[adb] logcat [<option>] … [<filter – spec>] …

PC端使用:

adb logcat

shell模式下使用:

logcat

二、logcat緩衝區

1.緩衝區介紹

android log輸出量巨大,特別是通訊系統的log,因此,android把log輸出到不同的緩衝區中,目前定義了四個log緩衝區:

1)Radio:輸出通訊系統的log

2)System:輸出系統元件的log

3)Event:輸出event模組的log

4)Main:所有java層的log,遺蹟不屬於上面3層的log

緩衝區主要給系統元件使用,一般的應用不需要關心,應用的log都輸出到main緩衝區中

預設log輸出(不指定緩衝區的情況下)是輸出System和Main緩衝區的log

2.緩衝區模型

image

3.獲取緩衝區命令

引數

描述

-b<buffer> 載入一個可使用的日誌緩衝區提供檢視,預設值是main

4.例項

複製程式碼
adb logcat –b radio

adb logcat –b system

adb logcat –b events

adb logcat –b main
複製程式碼

三、logcat命令引數

1.引數說明

引數

描述

-b <buffer> 載入一個可使用的日誌緩衝區供檢視,比如event和radio。預設值是main
-c 清除緩衝區中的全部日誌並退出(清除完後可以使用-g檢視緩衝區)
-d 將緩衝區的log轉存到螢幕中然後退出
-f <filename> 將log輸出到指定的檔案中<檔名>.預設為標準輸出(stdout)
-g 列印日誌緩衝區的大小並退出
-n <count> 設定日誌的最大數目<count>,預設值是4,需要和-r選項一起使用
-r <kbytes> 沒<kbytes>時輸出日誌,預設值是16,需要和-f選項一起使用
-s 設定過濾器
-v <format> 設定輸出格式的日誌訊息。預設是短暫的格式。支援的格式列表

一般長時間輸出log的話建議-f,-n,-r三個引數連用,這樣當一個檔案日誌輸出滿了之後可以馬上在另一箇中進行輸出

2.例項

複製程式碼
//將緩衝區的log列印到螢幕並退出
adb logcat -d 
//清除緩衝區log(testCase執行前可以先清除一下)
adb logcat -c
//列印緩衝區大小並退出
adb logcat -g
//輸出log
adb logcat -f /data/local/tmp/log.txt -n 10 -r 1
複製程式碼

四、logcat格式化輸出

1.引數說明

日誌訊息包含一個元資料欄位,除了標籤和優先順序,您可以修改輸出顯示一個特定的元資料欄位格式的訊息。為此,您使用-v選項來指定一個支援的輸出格式。一下為支援的格式:

格式

說明

brief 顯示優先順序/標記和過程的PID發出的訊息(預設格式)
process 只顯示PID
tag 只顯示優先順序/標記
raw 顯示原始的日誌訊息,沒有其他元資料欄位
time 呼叫顯示日期、時間、優先順序/標籤和過程的PID發出訊息
threadtime 呼叫顯示日期、時間、優先順序、標籤遺蹟PID TID執行緒發出的訊息
long 顯示所有元資料欄位與空白行和單獨的訊息

當logcat開始,指定想要輸出格式-v選項:

[adb] logcat [-v <format>]

adb logcat –v thread

只能指定一個輸出格式-v

2.例子

image

五、logcat優先順序

1.優先順序語法

優先順序使用字元標識,一下優先順序從低到高

V –Verbose(最低優先順序)

D – Debug

I – Info

W – Warning

E – Error

F – Fatal

S – Silent

為了減少不想要日誌的輸出,可以建立一個過濾器

過濾語法:tag:priority

//過濾TAG為ActivityManager輸出級別大於I的日誌與TAG為MyApp輸出級別大於D的日誌

adb logcat ActivityManager:I  My App:D *:S

adb logcat *:W

設定過濾級別為W以上

如果用的比較多可以設定環境變數:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D*:S"