1. Log信息级别

Log.v - VERBOSE  : 黑色

Log.d - DEBUG  : 蓝色

Log.i- INFO   : 绿色

Log.w- WARN   : 橙色

Log.e- ERROR   : 红色

从上而下级别逐次增加

2. 过滤:指定标签,指定级别

adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...

标签TAG: 在进行log输出时需要指定标签

 Log.v("Test", info );

LEVEL:

可以选择:[V D I W E S]中其中一个

TAG:X 的作用为: 输出标签为TAG的log级别大于X的信息. 例如:

 adb logcat Test:I 

输出 Test的I 和I 级别以上的log,包括 i, w, e

注意:

(1)可以指定多个[TAG:LEVEL ]

(2) level : S 表示为不输出该标签的日志,应为没有大于S级别的日志了

(3) [TAG:LEVEL ] 不会影响其他标签的日志, 所以如果要屏蔽其他log请使用 *:S

adb logcat Test:I *:S

3. 采用grep正则表达式过滤

grep 正则表达式参见grep与正则表达式

adb logcat | grep -iE "Audio3DSettings|setParameters|setAudio3DState"

adb logcat | grep -E '^[VDE]/(TAG1|TAG2)'

4. 在同时输出到屏幕和文件 tee

想要把日志保存到文件,如果采用IO重定向,就无法输出到屏幕, 针对这个问题可以采用 tee命令

adb logcat | grep -E '^[VDE]/(TAG1|TAG2)' | tee my.log

几种在shell命令行中过滤adb logcat输出的方法

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率。本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法。

1、只显示需要的输出(白名单)

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:

       adb logcat | grep MyApp
       adb logcat | grep -i myapp #忽略大小写。

       adb logcat | grep --color=auto -i  myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。

进阶一点可以使用 grep 的正则表达式匹配。例如上一个例子会匹配一行中任意位置的 MyApp,可以设置为仅匹配 tag。默认的 log 输出如下,如果修改过输出格式相应的表达式也要修改。

I/CacheService(  665): Preparing DiskCache for all thumbnails.

可以看出 tag 是一行开头的第三个字符开始,根据这点写出表达式:

adb logcat | grep "^..MyApp"

根据这个格式也可以设置只显示某个优先级的 log,再匹配行首第一个字符即可。例如仅显示 Error 级别 tag 为 MyApp 的输出:

adb logcat | grep "^E.MyApp"

当然也可以匹配多个,使用 | 分割多个匹配表达式,要加转义符。例如要匹配 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep "^..MyApp\|^..MyActivity"
       adb logcat | grep -E "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

logcat | grep -e aaa -e bbb -e ccc

2、过滤不需要的输出(黑名单)

还是使用 grep,用法也跟上面的一样,加一个 -v 即可。例如要过滤 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep -v "^..MyApp\|^..MyActivity"
       adb logcat | grep -vE "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

3、显示同一个进程的所有输出

有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。还是通过 grep 实现,思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的 java 包名(如 com.android.media)。

#!/bin/bash
       packageName=$1
       pid=`adb shell ps | grep $packageName | awk ‘{print $2}’`
       adb logcat | grep –color=auto $pid

4、从当前开始显示

logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的。

adb logcat -c && adb logcat

5、过滤 log 文件

有时需要分析 log 文件,过滤 log 文件还是使用 grep。例如 log 文件为 myapp.log,要匹配 tag 为 MyApp 和 MyActivity 的输出,然后输出到 newmyapp.log:

cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log

Windows 下推荐使用Notepad++,一个免费强大的记事本,支持正则表达式查找替换。可以高亮显示匹配内容,也可以删除不需要的内容。

以上的技巧主要用到了 grep,其实 logcat 本身也有过滤功能,可以根据 tag、优先级过滤 log,具体请参考 Android 官方文档Reading and Writing Logs。如果喜欢使用图形界面,请参考Using DDMS,DDMS 里面的 logcat 也可以同样过滤。

adb logcat命令查看并过滤android输出log

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

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

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

优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent

标记是一个简短的字符串,用于标识原始消息的来源。如下是一个日志输出的消息,优先级是“D”,标记是“PowerManagerService”:

D/PowerManagerService( 305): onSensorChanged: light value: 306.0
使用logcat命令查看android日志输出:

adb logcat     //显示全部日志
adb logcat > c:\test.log //将日志保存到文件test.log

根据tag标记和级别过滤日志输出:

仅输出标记为“ActivityManager”且优先级大于等于“Info”和标记为“PowerManagerService”并且优先级大于等于“Debug”的日志:

adb logcat ActivityManager:I PowerManagerService:D *:S

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

adb logcat *:W   //显示所有优先级大于等于“warning”的日志

adb logcat -s PowerManagerService   //显示PowerManagerService的日志信息

Logcat命令列表:

-d 将日志显示在控制台后退出
-c 清理已存在的日志
-f <filename> 将日志输出到文件
adb logcat -f /sdcard/test.txt

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

brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容

adb logcat -v thread   //使用 thread 输出格式
注意-v 选项中只能指定一种格式。

-b <buffer>加载一个可使用的日志缓冲区供查看,默认值是main。
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)

adb logcat -b radio     //查看radio缓冲区

ADB logcat 过滤方法(抓取日志)相关推荐

  1. adb logcat 过滤关键词 抓取日志

    1.将手机与电脑链接.链接后在终端输入adb devices查看连接状态. 2.输入过滤关键词 adb shell logcat | grep "关键词" 3.手机日志查看 adb ...

  2. ADB logcat 过滤方法

    byd张小伟 转载文章,为了方便查阅 目前查询APP日志的方法: adb logcat | grep PA            查询包含PA的所有日志 adb logcat | grep 关键字 A ...

  3. adb logcat 抓取日志_手机抓取崩溃的log日志(安卓/ios)

    android闪退获取日志方法: 1下载adb工具包 (工具包自己找,adb原理https://zhuanlan.zhihu.com/p/96468249) 2.注意事项 请确保电脑上只连接了一台手机 ...

  4. 不同厂商抓取日志方法

    本文原为转载文章,以下手机未做一一验证(括弧有说明哪些有验证),如有错误之处,欢迎评论指出. 各位小伙伴们 为提高应用的稳定性,需要测试美眉帮忙抓取日志来帮开发哥哥定位问题原因,而各个手机的rom各不 ...

  5. Android 使用adb 抓取日志信息

    Android 使用adb 抓取日志信息 首先需要 打开开发者模式,然后里面的usb 打开 然后我们在终端中输入 adb devices 查看是否有链接 如果没有显示如下图下面是空白的 这个可能就是开 ...

  6. android抓取日志,Android抓取所有日志

    总有些时候我们会遇到非必现场景,若未及时抓取日志,可能为时已晚 抓取日志 抓取Logcat日志 这个是最简单的,使用-f重定向到一个文本文件即可,-v threadtime则显示详细时间和进程 # f ...

  7. MTK 平台使用mtklogger 抓取日志

    1. 使用adb 打开界面 adb shell am start -n com.mediatek.mtklogger/com.mediatek.mtklogger.MainActivity 2. 设置 ...

  8. iOS抓取日志方式(1)

    iOS常用抓取日志的方式有多种,下面先介绍一种最简单的方式---直接在iPhone或iPad设备上获取日志. 1.打开[系统设置],找到[隐私]->[分析与改进],如图 2.在分析与改进中找到[ ...

  9. 小米10开始抓取日志怎么关闭_除了*#*#6485#*#*,小米手机还有这些神秘暗号

    最近在小米社区(xiaomi.cn)平台,一条快速查看手机电池信息的代码,居然成了大家广泛关注和讨论的焦点,甚至很多米粉也晒出了自己的界面截图,同时关于电池使用寿命和损耗的问题也被频频提及.而除了这条 ...

最新文章

  1. oracle数据库 gbk,oracle 数据库编码转换(转GBK) | 学步园
  2. 打开chm文件不能显示内容的解决办法
  3. 计算机起源于发展论文,关于计算机起源及发展的论文1500字左右,论文形式.
  4. POJ 1679 The Unique MST(次小生成树)
  5. AI理论知识整理(5)-对称矩阵-对角化
  6. illustrator下载_Illustrator笔工具练习
  7. 教你玩转CSS 下拉菜单
  8. POJ 1511 Invitation Cards——Dijkstra优先队列优化+反向建图
  9. 华为VLAN间互访配置
  10. STL之remove、remove_copy、remove_if、remove_copy_if
  11. 志高空调,到了最危险的时候!
  12. JavaSE 学习参考:枚举类型
  13. C++11多线程中的detach()、join()、joinable()
  14. [转载] ubuntu下pip的安装、升级和使用
  15. com.mysql.jdbc.MysqlDataTruncation 报错
  16. align latex 使用_LaTeX系列笔记(9)-数学模式下的间距及align等环境的实现
  17. ES6 对象的解构赋值
  18. chrome浏览器打开网址找不到服务器IP
  19. 读Zepto源码之Deferred模块
  20. 常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器

热门文章

  1. 我们不能剥夺另一个人从痛苦中受益的权利(ZZ)
  2. day-12函数进阶
  3. 7 C++指针做函数返回值
  4. 大家听说过“AI造字”吗
  5. 【夜读】一个人的顶级自律、是坚持这四件事
  6. js 前端实现将json格式数组下载到excel(xls、xlsx、csv)表格里
  7. Shared Control【共享控制】-Controlling Assistive Robots with Learned Latent Actions
  8. VRAY控制溢色|速度和质量平衡|漏光蓝海创意云渲染分享
  9. ps混合图层的各个模式的作用
  10. String类的substring()方法