前言
在使用调试中,总免不了日志的查看与分析,一般情况下 Android Studio 的 Logcat 功能已经满足日常需求,但在特定情况下,并不能满足对日志分析的需求,这时候就需要通过 adb 对设备进行日志的抓取与输出。
简单抓取与输出
在抓取 log 前,先进行清除旧日志信息
adb logcat -c
开始抓取日志,并把日志文档输出到指定文件中
adb logcat -v time > .\logcat.log
解释:> 指的输出到指定位置, .\logcat.log 指当前目录的 logcat.log 文件。
结束抓取: Ctrl + C (采用主动触发的形式结束日志的抓取)
常见日志过滤
-
打印 Error 级别的日志
adb logcat *.E搭配日志抓取和输出:
adb logact -v time *.E > ./logcat.log -
根据日志优先级过滤日志
adb logcat *:#log 日志优先级别 (所有优先级自动包含比它高级的优先级) :
- V: 详细日志(默认)
- D: 调试日志
- I: 正常使用时日志
- W: 警告日志
- E: 错误日志
- F: 运行时致命错误日志
-
根据标签过滤日志
语法:(tag表示标签,priority日志优先级)
adb logcat <tag> [:priority] -
根据 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 | 主缓存区 | 默认缓存区 |