Android - adb 日志抓取与输出

4,841 阅读2分钟

前言

在使用调试中,总免不了日志的查看与分析,一般情况下 Android Studio 的 Logcat 功能已经满足日常需求,但在特定情况下,并不能满足对日志分析的需求,这时候就需要通过 adb 对设备进行日志的抓取与输出。

简单抓取与输出

在抓取 log 前,先进行清除旧日志信息

adb logcat -c

开始抓取日志,并把日志文档输出到指定文件中

adb logcat -v time > .\logcat.log

解释:> 指的输出到指定位置, .\logcat.log 指当前目录的 logcat.log 文件。

结束抓取: Ctrl + C (采用主动触发的形式结束日志的抓取)

常见日志过滤

  1. 打印 Error 级别的日志

    adb logcat *.E
    

    搭配日志抓取和输出:

    adb logact -v time *.E > ./logcat.log
    
  2. 根据日志优先级过滤日志

    adb logcat *:#
    

    log 日志优先级别 (所有优先级自动包含比它高级的优先级) :

    • V: 详细日志(默认)
    • D: 调试日志
    • I: 正常使用时日志
    • W: 警告日志
    • E: 错误日志
    • F: 运行时致命错误日志
  3. 根据标签过滤日志

    语法:(tag表示标签,priority日志优先级)

    adb logcat <tag> [:priority]
    
  4. 根据 grep 正则表达式过滤日志

    • 只输出筛选过的日志

      如:匹配字符串

      # 匹配字符串:Test
      adb logcat | grep Test
      # 忽略大小写
      adb logcat | grep -i test
      # 设置匹配字符串颜色并忽略大小写
      adb logcat | grep -- color=auto -i test
      
    • 输出同一进程的所有日志

      adb logcat | grep -color=auto $pid
      

常见 logcat 参数

参数说明备注
-d将日志输出在控制台后退出
-c清理已存在的缓存日志
-f 将日志输出到文件adb logcat -f ./logcat.log
-v 置日志输入格式控制输出字段默认格式为 brief,只能指定一种格式
-b 加载可用缓存区默认main
brief输出优先级/标记和原始进程的PID
process仅输出进程PID
tag仅输出优先级/标签
thread仅输出进程:线程和优先级/标签adb logcat -v thread
raw输出原始日志
time输出日期时间,优先级/标签和PID
long输出所有元数据字段
radio输出包含在无线/电话相关缓存区日志adb logcat -b radio
events输出事件相关日志
main主缓存区默认缓存区