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文件中。
– "-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
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