用 logcat 命令來查看 android系統(tǒng)日志緩沖區(qū)的內容 一、在 Java 與 C 語言中輸出日志: 1) Java 代碼在程序中輸出日志, 使用 android.util.Log 類的以下 5 個方法: Log.v()、Log.d()、Log.i()、Log.w()、Log.e()。 分對應 Verbose、Debug、INFO、Warn、Error 的首字母。 例如:Log.i(
"類::函數(shù)名", "日期_時間_源碼文件名_行號_日志信息內容"); 2) C 代碼在程序中輸出日志,使用 log 的 API 函數(shù): __android_log_write(日志類型宏,日志標簽字符串,日志令牌內容字符串); 需要:1.
Android.mk 中添加LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 2. *.c 中添加 #include 3. 日志類型宏有: /^ * Android log priority values,
in ascending priority order. ^/ typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0, /^ only for
SetMinPriority() ^/
ANDROID_LOG_DEFAULT,
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL, /^ only for
SetMinPriority(); must be last ^/
ANDROID_LOG_SILENT, } android_LogPriority; 二、logcat 使用方法: 格式: logcat <功能選項> | <日志過濾描述> 1) logcat 的功能選項包括: -b 加載一個可使用的環(huán)形日志緩沖區(qū),如:radio,events,main 是默認的。
-c 清除所有 log 并退出
-d 得到所有log并退出且不阻塞
-g 得到環(huán)形緩沖區(qū)的大小并退出 -f 輸出日志信息到指定的文件中,默認是標準輸出 stdout。 -r [] 設置環(huán)形日志緩沖區(qū)的kbytes,默認值為16,需要和 -f 選項一起使用 -n 設置環(huán)形日志緩沖區(qū)的最大數(shù)目,默認值是4,需要和 -r 選項一起使用
-s 設置默認的過濾級別為 Silent,例如指定 '*:S'
-B 輸出 log 到二進制中。 -v 設置 log 的打印格式, 格式有如下主要7種:(不能組合使用) 1. brief - 顯示 日志類型/日志標簽 和 進程ID (默認格式); 例如:$ adb
logcat -v brief D/dalvikvm(
96): GC freed 13293 objects / 590664 bytes in 259ms 2. process - 僅顯示 進程ID ; 例如:$ adb logcat
-v process D(
96) GC freed 13293 objects / 590664 bytes in 259ms (dalvikvm) 3. tag - 僅顯示 日志類型 或 日志標簽; 例如:$ adb
logcat -v tag D/dalvikvm: GC
freed 13293 objects / 590664 bytes in 259ms 4. thread - 僅顯示 指定 日志類型 、進程ID:線程ID、日志標簽; 例如:$ adb
logcat -v thread D( 52:0x3e) GC freed
19465 objects / 919736 bytes in 387ms D( 52:0x3e) threadid=15:
bogus mon 1+0>0; adjusting 5. raw - 顯示原始日志信息,沒有其它元數(shù)據(jù)字段; 例如:$ adb
logcat -v raw GC freed 19465 objects / 919736
bytes in 387ms threadid=15: bogus mon 1+0>0;
adjusting 6. time - 顯示日期、調用時間,日志類型/日志標簽 和 進程ID; 例如:$ adb
logcat -v time 11-25 13:36:00.610 D/dalvikvm( 52): GC freed 19465
objects / 919736 bytes in 387ms 11-25 13:58:40.650 D/dalvikvm( 52): threadid=15: bogus
mon 1+0>0; adjusting 7. long - 顯示全部元數(shù)據(jù)字段分別用空行隔開; 例如:$ adb
logcat -v long [ 11-25 13:36:00.610 52:0x3e D/dalvikvm ] GC freed 19465 objects / 919736 bytes in 387ms [ 11-25 13:58:40.650 52:0x3e D/dalvikvm ] threadid=15: bogus mon 1+0>0; adjusting 2) logcat 的日志查詢常用的有如下幾種: 1.查看全部系統(tǒng)日志緩沖區(qū)的內容 $ adb logcat 2.只輸出指定類型的日志 日志類型標識符(優(yōu)先級由低到高排列): 1. V — Verbose 詳細的 <- 最低優(yōu)先權 2. D — Debug 調試 3. I — Info 消息 4. W — Warn 警告 5. E — Error 錯誤 6. F — Fatal 致命的 7. S — Silent 無聲的 <- 最高優(yōu)先權
$ adb logcat *:V 注:顯示優(yōu)先級為 Verbose 或更高的日志信息,輸出 Debug、Info、Warn、Error 調試信息。 $ adb logcat *:D 注:顯示優(yōu)先級為 Debug 或更高的日志信息,輸出 Debug、Info、Warn、Error 調試信息。 $ adb logcat *:I 注:顯示優(yōu)先級為 Info 或更高的日志信息,輸出 Info、Warn、Error 調試信息。 $ adb logcat *:W 注:顯示優(yōu)先級為 Warn 或更高的日志信息,輸出 Warn 和 Error 調試信息。 $ adb logcat *:E 注:只輸出 Error 調試信息 。 3. 只輸出指定 類型 和 標簽 的日志 adb logcat <日志標簽>:<日志類型標識符> <日志標簽>:<日志類型標識符> ... *:S 注:1. 可以寫多個 <日志標簽>:<日志類型標識符> 之間用空格分隔; 2. 最后必須是 *:S 例如: $ logcat dalvikvm:D Checkin:W *:S 4. 只輸出指定 標簽 的日志 adb logcat <日志標簽>:* <日志標簽>:* ... *:S 注:1. 可以寫多個 <日志標簽>:<日志類型標識符> 之間用空格分隔; 2. 最后必須是 *:S 例如: $ adb logcat ActivityManager:* *:S
|