android 抓完整的log的方式(包括logcat抓所有非内核log)

 

log 分为 kernel ,  main, events ,radio 几种log

 

kernel属于 linux内核的log ,通过读取 /proc/kmsg  或者通过串口来抓取。

USB连接手机抓取方式:

           adb shell cat  /proc/kmsg  > kernel.log

串口抓取方式:

           在串口终端中设置对应的串口波特率,打开相应的串口。获取log。

 

main, events ,radio 是 framework的log ,包括cpp 和 java代码的log。

 

 

radio 可以抓ril层的log, 抓取方式:

         adb logcat -b radio -v time > radio.txt

    -v time 表示在log中加入每条log发生的时间。

 

main log 和我们从DDMS中看到的log是一致的。

抓取方式:

              adb logcat -b main -v time > main.txt

 

event log 属于system log

抓取方式:

    adb logcat -b events -v time > events.log

 

 

其实我们不知道,logcat -b的 选项是可以复用的!第一次发现这个,我是从logcat 实现的源码中发现的。

请看下面的show_help 函数中的 红色字体。 The default is -b main -b system ,意思是说,如果我们不加 -b 选项的话,默认就是  -b main -b system 两种log。

 

这样我们要抓 所有的 非内核的log 就变得比较方便的。那么我们只需要把所有的四种类型的log 都加进 -b 选项中。

那么我们就可以打印所有的log啦!如下命令即可实现:

 

             adb logcat -b main -b system -b radio -b events  -v time > all_user.log

 

并且,我们也可以对比 radio 和events 等各种类型的log,因为有个 时间标签,我们可以知道 不同类型的log之间的顺序。

这样子,我们就不用去开两个终端去分别抓取不同类型的log了。是不是很爽!?

 

#ls /dev/log/
    events
    ksystem
    main
    radio
    system

 

事实上,我还发现了 /dev/log/ 目录下 另外还有一个很多资料当中没有提到过的 ksystem 的 设备节点。这个可能是用于获取其它信息的。目前我还没有去研究,这个设备节点是用来干什么的。如果有人知道,请告知。谢谢。

 

 

"system/core/include/cutils/logger.h"
#define LOGGER_LOG_MAIN         "log/main"
#define LOGGER_LOG_RADIO        "log/radio"
#define LOGGER_LOG_EVENTS       "log/events"
#define LOGGER_LOG_SYSTEM       "log/system"

 

 

"system/core/logcat/logcat.cpp" 

 

static void show_help(const char *cmd)
{
    fprintf(stderr,"Usage: %s [options] [filterspecs]\n", cmd);

    fprintf(stderr, "options include:\n"
                    "  -s              Set default filter to silent.\n"
                    "                  Like specifying filterspec '*:s'\n"
                    "  -f <filename>   Log to file. Default to stdout\n"
                    "  -r [<kbytes>]   Rotate log every kbytes. (16 if unspecified). Requires -f\n"
                    "  -n <count>      Sets max number of rotated logs to <count>, default 4\n"
                    "  -v <format>     Sets the log print format, where <format> is one of:\n\n"
                    "                  brief process tag thread raw time threadtime long\n\n"
                    "  -c              clear (flush) the entire log and exit\n"
                    "  -d              dump the log and then exit (don't block)\n"
                    "  -t <count>      print only the most recent <count> lines (implies -d)\n"
                    "  -g              get the size of the log's ring buffer and exit\n"
                    "  -b <buffer>     Request alternate ring buffer, 'main', 'system', 'radio'\n"
                    "                  or 'events'. Multiple -b parameters are allowed and the\n"
                    "                  results are interleaved. The default is -b main -b system.\n"
                    "  -B              output the log in binary");


    fprintf(stderr,"\nfilterspecs are a series of \n"
                   "  <tag>[:priority]\n\n"
                   "where <tag> is a log component tag (or * for all) and priority is:\n"
                   "  V    Verbose\n"
                   "  D    Debug\n"
                   "  I    Info\n"
                   "  W    Warn\n"
                   "  E    Error\n"
                   "  F    Fatal\n"
                   "  S    Silent (supress all output)\n"
                   "\n'*' means '*:d' and <tag> by itself means <tag>:v\n"
                   "\nIf not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.\n"
                   "If no filterspec is found, filter defaults to '*:I'\n"
                   "\nIf not specified with -v, format is set from ANDROID_PRINTF_LOG\n"
                   "or defaults to \"brief\"\n\n");

 

}

 

 

 

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值