我们在做app测试的过程中,肯定会遇到需要抓取日志问题,这几天安静也遇到了此问题,后台日志生成的太多了,保存本地了吧,设备多没有这么USB,通过wifi连接又太麻烦,你说这怎么是好?不要着急,我们往下看
adb logcat介绍
adb 是android一个操作命令,前面有讲过----常用的adb命令
logcat 是android一个打印日志的工具,当然也可以通过命令行进行操作。最主要的是不仅仅可以PC端使用,还可以在app内部进行使用
logcat原理
格式
[adb] logcat [<option>] … [<filter – spec>] … PC端使用: adb logcat shell模式下使用: logcat
logcat 命令行参数
参数 | 描述 |
-b | 加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main |
-c | 清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区) |
-d | 将缓冲区的log转存到屏幕中然后退出 |
-f | 将log输出到指定的文件中<文件名>.默认为标准输出(stdout) |
-g | 打印日志缓冲区的大小并退出 |
-n | 设置日志的最大数目<count>,默认值是4,需要和-r选项一起使用 |
-r | 没<kbytes>时输出日志,默认值是16,需要和-f选项一起使用 |
-s | 设置过滤器 |
-v | 设置输出格式的日志消息。默认是短暂的格式。支持的格式列表 |
PC端使用
pc端使用肯定是结合这adb进行使用
# 查看日志
adb logcat # 过滤关键字日志 win用find mac 用grep
adb logcat | find "xxxxx" # 保存日志
adb logcat >路径\名称.txt # 保存过滤日志
adb logcat >find "xxxx" >路径\名称.txt # 清空缓存日志
adb logcat -c # 打印缓冲区大小并退出
adb logcat -g
接下来就是重点了,也是这个地方帮我解决了问题。
app端
在app端使用的时候必须要通过adb shell 进入到app内中,进入adb shell 其实就是android的终端(也就是liunx系统中,就可以敲命令了)
我们通过几个需求来了解app端的log使用方法:
需求1:实时过滤“XXX”日志并保存下来
PC端的方法上面已经写过了可以参考下,app端的可以这样写
# app端保存日志
logcat -s 标签名 -f /app内存路径/名称.txt # 通过保存在app中,然后再通过adb pull 提取出来
我们知道在PC端中-s是过滤关键字,但是这个地方不是,这个地方是过滤的日志标签名(就是打印日志前面写的标签类型)
需求2:不连接usb实时保存日志
可能会有人想通过wifi连接,但是如果我们的app不在办公室测试的时候怎么通过wifi连接呢?
# 不一直连接usb实时抓取日志 logcat -s 标签名 -f /路径/名称.txt & # & 表示后台运行
通过这个命令,只要手机不关机,命令就会一直进行中,这样我们不用实时连接USB也能实时抓取日志了
注意:app的命令必须要进入到adb shell 的状态下
就是这个命令帮助了安静解决了领导的要求, 监控的设备多了,还不用连接USB。只需要2行命令,多么简单,快去尝试下吧~~~