Android调试过程抓取带时间的logcat和kernel log打印

可以直接在串口输入以下命令实现:

logcat -v time -f /data/logcat.log | cat /proc/kmsg | tee /data/kernel_dmesg.log

说明:logcat打印输出到data目录的logcat.log文件,dmesg打印,也就是kernel内核的打印会在data目录的kernel_dmesg.log文件中。

logcat 输出日志信息到文件中

– "-f"选项 : 该选项后面跟着输入日志的文件, 使用adb logcat -f /sdcard/log.txt 命令, 注意这个log文件是输出到手机上,需要指定合适的路径。

gtt92e:/ # logcat -f /sdcard/log.txt 

这个参数对不能一直用电脑连着手机收集日志的场景非常有用,其实android shell下也有一个相同参数的logcat命令。使用如下命令可以执行后断开PC和手机持续收集LOG。

gtt92e:/ # logcat -f /sdcard/log.txt & #这里的&符号表示后台执行,记住一定要添加。

注意合适的时候需要停止掉以上命令,否则再次使用相同命令的时候,就会有两个logcat写同一个文件

停止方法(串口执行): kill -9 <logcat_pid>         
其中logcat_pid通过如下命令获取
ps | grep logcat

– ">"输出 : “>” 后面跟着要输出的日志文件, 可以将 logcat 日志输出到文件中, 使用adb logcat > log 命令, 使用more log 命令查看日志信息;
举例说明:

130|gtt92e:/ #  logcat -f /sdcard/log.txt  &
[1] 7662
gtt92e:/ # 
gtt92e:/ # ps | grep logcat                                                    
root      7662  6277  7592   1748  __skb_recv f3348a6c S logcat
gtt92e:/ # 
gtt92e:/ # 
gtt92e:/ # kill -9 7662
gtt92e:/ # 
[1] + Killed               logcat -f /sdcard/log.txt

扩展知识:

cmd命令行中使用adb logcat命令查看android系统和应用的log,按键盘的ctrl+c中断输出log记录。

logcat日志中的优先级/tag标记:

android输出的每一条日志都有一个标记和优先级与其关联。

优先级是下面的字符,顺序是从低到高:

V — 明细 verbose(最低优先级)

D — 调试 debug

I — 信息 info

W — 警告 warn

E — 错误 error

F — 严重错误 fatal

S — 无记载 silent

注:*:S用于设置所有标记的日志优先级为S,这样可以确保仅输出符合条件的日志。

Logcat命令列表:

-d 将日志显示在控制台后退出

-c 清理已存在的日志

-f 将日志输出到文件

adb logcat -f /sdcard/test.txt

-v 设置日志输入格式控制输出字段,默认的是brief格式

-t 输出最近的几行日志, 输出完退出, 不阻塞;

brief — 显示优先级/标记和原始进程的PID (默认格式)

process — 仅显示进程PID

tag — 仅显示优先级/标记

thread — 仅显示进程:线程和优先级/标记

raw — 显示原始的日志信息,没有其他的元数据字段

time — 显示日期,调用时间,优先级/标记,PID

long —显示所有的元数据字段并且用空行分隔消息内容

adb logcat -v thread //使用 thread 输出格式

注意-v 选项中只能指定一种格式。

下面介绍一下常用的通过加参数获取想要的log打印信息

通过标签过滤,即只打印包含你关键字的log

adb logcat -s 标签/关键字符

-v time 显示时间

adb logcat -v time -s buz_beep

-v threadtime 查看日志的输出时间和线程信息

adb logcat -v threadtime -s buz_beep

-v long 输出所有信息

adb logcat -v long -s buz_beep

通过字符过滤(这个是使用比较多的一种方式)

adb logcat | grep Camera

//只打印所有包含Camera字符的log

过滤字符串忽略大小写

adb logcat | grep -i Camera

logcat 清空缓冲区的打印

adb logcat -c

输出最近的10行日志, 并且不会阻塞

adb logcat -t 10

你可能感兴趣的:(Android系统开发,Android应用开发)