Logcat命令详情

logcat是什么?

Logcat 是一个命令行工具,用于转储系统消息日志,其中包括设备引发错误时的堆叠追踪以及从您的应用使用 Log类编写的消息。

格式:[adb] logcat [<option>] ... [<filter‐spec>] ...

logcat 命令参数:
-b <buffer> 加载可供查看的备用日志缓冲区,比如event和radio。默认值是main缓存区
-c 清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区)
-d 将缓冲区的log转存到屏幕中然后退出
-f <filename> 将log输出到指定的文件中<文件名>.默认为标准输出(stdout)
-g 打印指定日志缓冲区的大小并退出。
-n <count> 设置日志的最大数目<count>,默认值是4,需要和-r选项一起使用
-r <kbytes> 每输出<kbytes>日志文件,默认值是16,需要和-f选项一起使用
-s 设置默认的过滤级别为silent.( -s robin:I )
-v <format> 设置日志消息的输出格式。默认值为 brief 格式有关支持的格式列表

logcat缓冲区:adb logcat -b <buffer>
main 查看主要日志缓冲区(默认值)
events 查看包含事件相关消息的缓冲区
radio 查看包含无线装置/电话相关消息的缓冲区
system 查看系统组件的log

logcat日志输出格式:adb logcat -v <format>
brief 显示优先级/标记以及发出消息的进程的 PID(默认格式)
brief 显示优先级/标记,以及发出消息的进程的 PID(默认格式)
process 只显示 PID
tag 只显示优先级/标记
raw 显示原始的日志消息,没有其他元数据字段
time 显示日期、调用时间、优先级/标记以及发出消息的进程的 PID
threadtime 显示日期、调用时间、优先级、标记以及发出消息的线程的 PID 和 TID
long 显示所有元数据字段,并使用空白行分隔消息

logcat过滤日志输出:[<filter‐spec>] 格式:tag:priority
V (verbose)— 详细(最低优先级) D (debug)— 调试
I (info)— 信息 W (warning)— 警告
E (error)— 错误 F (fatal)— 致命
S (silent)— 静默(最高优先级,不会打印任何内容)

例: adb logcat ActivityManager:I MyApp:D *:S
最后一个元素 *:S 将所有标记的优先级设为“静默”,从而确保系统仅显示带有“ActivityManager”和“MyApp”标记的日志消息。

使用 *:S 可有效地确保日志输出受限于您已明确指定的过滤器 —它允许过滤器充当日志输出的“白名单”。

adb logcat 和 adb shell logcat 的区别:

区别: 

adb logcat 抓取设备log时,使用Ctrl +C命令或 Ctrl + D 命令时,此时会终止对设备log 的抓取。

adb shell logcat 如果也做同样的操作,结果是一样的,也就说结果上并没有任何区别。

但是当 adb shell 和 logcat 分段使用时,就能看到不一样的效果。在shell中执行的命令logcat一直在后台运行,当操作快捷键后,logcat线程也就终止了

注:1.adb logcat 或者 adb shell logcat 都可以
2.一般长时间输出log的话建议-f,-n,-r三个参数连用,这样当一个文件日志输出满了之后可以马上在另一个中进行输出。
3.默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log

详情查看安卓官网developer.android.com

原文地址:https://www.cnblogs.com/zeo-to-one/p/6616654.html