adb进阶一 —— logcat

adb进阶一 —— logcat

logcat 简介

logcat是Android中的一个命令行工具,可以用于测试过程中获取程序的log
基本用法:
测试开始前,可以先清缓存:adb logcat -c
获取日志:adb logcat > E:\app_workstation\Android_files\logs\1.log

语法格式:

1
[adb] logcat [<option>] … [<filter – spec>] …

推荐搭配grep使用

logcat 缓冲区

Android log输出量巨大, 特别是通信类log,好在Android降log放在不同的缓冲区内,可用于指定缓冲区输出log,目前有四个缓冲区:

缓冲区名称 用途
Radio 输出通信系统的log
System 输出系统组件的log
Event 输出event模块的log
Main 所有java层的log,以及不属于上面三层的log

缓冲区主要是给系统组件使用的,一般的应用不需要考虑,应用的log都在main缓冲区中
默认log输出(不指定缓冲区的情况下)是输出SystemMain缓冲区的log

获取缓冲区命令:

参数 描述
-b 加载一个可使用的日志缓冲区提供查看,默认是main

实例:

1
2
3
4
5
6
7
adb logcat –b radio

adb logcat –b system

adb logcat –b events

adb logcat –b main

logcat 参数

日志级别

由低到高

参数 含义
V Verbose(最低优先级)明细
D Debug调试
I Info 信息
W Warning警告
E Error 错误
F Fatal 严重错误
S Silent(Super all output)

日志过滤器格式:tag: priority

示例:

1
2
3
4
5
6
7
8
9
10
11
# 仅输出标记为“ActivityManager”且优先级大于等于“Info”和 标记为“PowerManagerService”并且优先级大于等于“Debug”的日志

adb logcat ActivityManager:I PowerManagerService:D *:S

# 显示所有优先级大于等于“warning”的日志

adb logcat *:W

# 显示PowerManagerService的日志信息

adb logcat -s PowerManagerService

tips:*:S设置所有日志级别高于S的日志,由于没有这样级别,所以加上该过滤器可以确保只会输出符合条件的日志

参数

参数 描述
-b 加载一个可使用的日志缓冲区供查看,默认值为main
-c 清除缓冲区中的全部日志并退出(清除完成后可使用-g 查看)
-g 打印日志缓冲区的大小并退出
-d 将缓冲区的log转存到屏幕中然后退出
-f 将log输出到制定的文件中<文件名>,默认为标准输出(stdout)
-n 设置日志的最大数目,默认值为4,需要和-r选项一起使用
-r 按照每千字节输出日志,默认值为16,需要和-f一起使用
-s 设置过滤器
-v 设置输出格式的日志消息

一般长时间输出log的话建议-f -n -r三个参数连用,这样当一个文件日志输出满了之后可以马上在另一个中进行输出(输出多个指定大小的日志文件)
示例:

1
adb logcat -f /data/local/tmp/log.txt -n 2 -r 3
1
adb logcat -b radio -v time > /tmp/event.log

tips:-v time表示在log中加入每条log发生的时间

格式化输出

-v更多格式:

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

示例:adb logcat -v thread

以上,完~

参考文章

ADB logcat 过滤方法(抓取日志)
Android logcat命令详解

文章目录
  1. logcat 简介
  2. logcat 缓冲区
  3. logcat 参数
    1. 日志级别
    2. 参数
    3. 格式化输出
  4. 参考文章
|