一、logcat命令介紹
1.android log系統
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.緩沖區模型
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.例子
五、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"