通过adb工具查看Android Logcat日志

工作平台:MacOS
系统版本:10.14.5
adb版本:1.0.41

1.直接使用adb logcat

adb logcat

adb工具需要安装,Android sdk工具自带adb工具,在sdk/platform-tools/adb目录;可以将之配置到环境变量方便终端工具直接使用

查看日志前建议先清空日志缓存:

adb logcat -c

关联:

MacOS安装adb工具

windows下载adb工具

2、过滤输出日志

  1. 过滤指定级别日志:

adb logcat *:W

其中W是表示不显示警告等级以下的日志。

日志等级顺序是从低到高:
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无输出 silent

  1. 按照tag过滤

adb logcat tag:* *:S

tag为希望过滤出的标签,*:S必须加上 ,用于设置所有标记的日志优先级为S,确保只输出过滤的tag项。

同理,如果要输出指定tag的同时,还想输出error以上等级的日志,可以将*:S改为*:E

效果如下

$ adb logcat HttpUtils2:* *:S
--------- beginning of system
--------- beginning of main
09-20 14:20:02.177  7979 19583 I HttpUtils2: sendPostRequest-onFinish-thread=Thread-1714
09-20 14:20:02.346  7979 19583 I HttpUtils2: sendPostRequest-onFinish-thread=Thread-1718
09-20 14:20:02.359  7979 19583 I HttpUtils2: sendPostRequest-onFinish-thread=Thread-1719
09-20 14:31:56.539  7979 19583 I HttpUtils2: sendPostRequest-onFinish-thread=Thread-1732

3、通过包名过滤日志

1)查看Android进程pid,格式如下:

adb shell "ps | grep 包名"

$ adb shell "ps | grep com.paic.paphonesdk"
u0_a907   29711 315   854736 90964 sys_epoll_ 00000000 S com.paic.paphonesdk

其中第二项"29711"就是对应pid

另外需要注意的是,该命令会将所有包名中含有"com.paic.paphonesdk"字符的进程均检测出来,如下:

$ adb shell "ps | grep com.paic.paphonesdk"
u0_a906   7979  315   789524 46620 sys_epoll_ 00000000 S com.paic.paphonesdk
u0_a907   29711 315   822144 78708 sys_epoll_ 00000000 S com.paic.paphonesdk.cxjt

2)通过pid查看logcat日志,格式如下:

adb logcat | grep pid

同样可以加上过滤条件

adb logcat *:V | grep pid

$ adb logcat *:V | grep 7979
09-20 12:30:23.919  1569  4007 I ActivityManager: Start proc 7979:com.paic.paphonesdk/u0a906 for activity com.paic.paphonesdk/.WelcomeActivity
09-20 12:30:24.001  7979  7979 W ReflectionUtils: 
……

也可以直接将日志输出到文件

adb logcat *:V | grep pid > 输出文件路径

windows环境下不支持grep命令,换成find,并将pid用双引号包裹即可

adb logcat | find “pid“

3)Mac下可以将上述步骤封装进shell脚本,Win可以封装为bat脚本,形成自动化

以下是Mac下的shell脚本,只进行了简单研究,不追求优雅严谨,足够使用。win下bat脚本小伙伴们可以自行研究。

#!/bin/bash
#运行前给权限chmod +x ./androidlogcat.sh  #使脚本具有执行权限
#./androidlogcat.sh  #执行脚本
#crtl+c退出脚本

s_ps=`adb shell "ps |grep com.paic.paphonesdk"`
echo $s_ps

#获取com.paic.paphonesdk的pid
if [[ $s_ps =~ "com.paic.paphonesdk" ]]
then
    echo "existing process"
    array_s=($s_ps)
    echo "数组元素为: ${array_s[*]}"
    echo "数组长度为: ${#array_s[*]}"
    if [ ${#array_s[*]} = 0 ]
    then
        echo "长度为0"
    else
        echo "长度不为0"
        s_pid=${array_s[1]}
        echo $s_pid
    fi
else
    echo "none"
fi

echo "paphonesdk pid:$s_pid"
#清空日志缓存
adb logcat -c
#输出日志保存到文件
s_file="and_`date "+%Y%m%d%H%M%S"`.txt"
echo "日志文件名:$s_file"
adb logcat *:V | grep $s_pid >./$s_file

参考:

ADB抓取日志和日志过滤

你可能感兴趣的:(通过adb工具查看Android Logcat日志)