用 logcat 命令来查看 android 系统日志缓冲区的内容

一、在 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( "类::函数名", "日期_时间_源码文件名_行号_日志信息内容");
2) C 代码在程序中输出日志,使用 log 的 API 函数:
   __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      加载一个可使用的环形日志缓冲区,如:radio,events,main 是默认的。
   -c              清除所有 log 并退出
   -d              得到所有log并退出且不阻塞
   -g              得到环形缓冲区的大小并退出
   -f    输出日志信息到指定的文件中,默认是标准输出 stdout。
   -r []   设置环形日志缓冲区的kbytes,默认值为16,需要和 -f 选项一起使用
   -n       设置环形日志缓冲区的最大数目,默认值是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     - 显示原始日志信息,没有其它元数据字段;
   例如:$ 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    - 显示全部元数据字段分别用空行隔开;
   例如:$ 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.查看全部系统日志缓冲区的内容
   $ adb logcat
   2.只输出指定类型的日志
     日志类型标识符(优先级由低到高排列):
     1. V — Verbose 详细的 <- 最低优先权
     2. D — Debug   调试
     3. I — Info    消息
     4. W — Warn    警告
     5. E — Error   错误
     6. F — Fatal   致命的
     7. S — Silent  无声的 <- 最高优先权

   $ adb logcat *:V
   注:显示优先级为 Verbose 或更高的日志信息,输出 Debug、Info、Warn、Error 调试信息。
   $ adb logcat *:D
   注:显示优先级为 Debug 或更高的日志信息,输出 Debug、Info、Warn、Error 调试信息。
   $ adb logcat *:I
   注:显示优先级为 Info 或更高的日志信息,输出 Info、Warn、Error 调试信息。
   $ adb logcat *:W
   注:显示优先级为 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

 

摘自:http://blog.sina.com.cn/s/blog_4c451e0e010133ad.html

posted @ 2015-01-19 13:17  丫头_de  阅读(2052)  评论(0编辑  收藏  举报