基本命令
logcat使用方法如下所示 :
[adb] logcat [<option>] ... [<filter-spec>] ...
[options]命令包括如下選項:
-s 設定過濾器,例如指定 '*:s'
-f <filename> 輸出到檔案,默認情況是標準輸出。
-r [<kbytes>] Rotate log every kbytes. (16 if unspecified). Requires -f
-n <count> Sets max number of rotated logs to <count>, default 4
-v <format> 設定log的列印格式, <format> 是下面的一種:
brief process tag thread raw time threadtime long
-c 清除所有log並退出
-d 得到所有log並退出 (不阻塞)
-g 得到環形緩衝區的大小並退出
-b <buffer> 請求不同的環形緩衝區 ('main', 'system', 'radio', 'events',默認為"-b main -b system")
-B 輸出log到二進制中。
過濾器的格式是一個這樣的串:
<tag>[:priority]
其中 <tag> 表示log的component, tag (或者使用 * 表示所有) , priority 從低到高如下所示:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent
生成方法
事實上logcat的功能是由Android的類android.util.Log決定的,在程式中log的使用方法如下所示:
Log.v() -------------------- VERBOSE
Log.d() -------------------- DEBUG
Log.i() -------------------- INFO
Log.w() -------------------- WARN
Log.e() -------------------- ERROR
以上log的級別依次升高,DEBUG信息應當只存在於開發中,INFO, WARN,ERROR這三種log將出現在發布版本中。
對於JAVA類,可以聲明一個字元串常量TAG,Logcat可以根據他來區分不同的log,例如在計算器(Calculator)的類中,定義如下所示:
由此,所有在Calculator中使用的log,均以"Calculator"為開頭。
例如使用方法如下所示:
# logcat &
< 得到一個log片段 >
W/KeyCharacterMap( 130): No keyboard for id 0
W/KeyCharacterMap( 130): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
I/ActivityManager( 52): Displayed activity com.android.contacts/.DialtactsContactsEntryActivity: 983 ms
I/ARMAssembler( 52): generated scanline__00000077:03545404_00000A04_00000000 [ 29 ipp] (51 ins) at [0x25c978:0x25ca44] in 1764174 ns
I/ARMAssembler( 52): generated scanline__00000077:03515104_00000001_00000000 [ 46 ipp] (65 ins) at [0x25d1c8:0x25d2cc] in 776789 ns
D/dalvikvm( 130): GC freed 834 objects / 81760 bytes in 63ms
D/dalvikvm( 52): GC freed 10588 objects / 425776 bytes in 94ms
其中W/I/D表示log的級別,“dalvikvm”“ARMAssembler”等是不同組件(component)的名稱,後面括弧裡面的數字表示了發出log的進程號。