Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈跟踪,以及使用 Log 类从您的应用程序写入的消息。
命令行语法
通过 adb shell 运行 Logcat,一般用法如下:
[adb]logcat[]…[]…
您可以将 logcat 作为 adb 命令运行,也可以直接从模拟器或相关设备上的 shell 提示符运行。要使用 adb 查看日志输出,请转到您的 SDK platform-tools/ 目录并执行以下命令:
亚行日志猫
要获取 logcat 在线帮助,请启动设备并执行以下命令:
adb logcat –帮助
您可以建立与设备的 shell 连接并执行以下命令:
亚行外壳
日志猫
选项
logcat 的命令行选项描述如下
-b :加载备用日志缓冲区以供查看,例如事件或广播。默认情况下使用主缓冲区、系统缓冲区和崩溃缓冲区集。请参阅查看备用日志缓冲区。
-c, –clear :清除(清空)选定的缓冲区并退出。默认缓冲区集是 main、system 和 crash。要清除所有缓冲区,请使用 -b all -c。
-e , –regex= :仅输出匹配行的日志消息,其中是正则表达式。
-m , –max-count= : 输出行后退出。这将与 –regex 配对,但独立工作。
–print :与 –regex 和 –max-count 配对以使内容绕过正则表达式过滤器,但在获得适当数量的匹配时仍然能够停止。
-d :将日志转储到屏幕并退出。
-f :写入日志消息输出。默认为标准输出。
-g, –buffer-size :输出指定日志缓冲区的大小并退出
-n :将最大轮换日志数设置为 。默认值为 4。 -r 选项是必需的。
-r :每次输出轮换日志文件。默认值为 16。 -f 选项是必需的。
-s :等价于过滤表达式’*:S’;它将所有标签的优先级设置为“静默”,并用于在可以添加内容的过滤器表达式列表之前。要了解更多信息,请转到过滤日志输出部分。
-v :设置日志消息的输出格式。默认格式是线程时间。有关支持的格式列表,请参阅控制日志输出格式部分。
-D, –dividers :日志缓冲区之间的输出分隔符。
-c :刷新(清除)整个日志并退出。
-t :仅输出最新的行数。此选项包括 -d 功能。
过滤日志输出
1、日志消息的标记是一个短字符串,指示消息源自的系统组件(例如,视图系统的“视图”)。
2、优先级是以下字符值之一(按优先级从低到高的顺序):
V:详细(最低优先级)
D:调试
一:信息
W:警告
E:错误
F:致命错误
S:静默(最高优先级,从不输出任何东西)
通过运行 Logcat 并观察每条消息的前两列,您可以获得系统中使用的标签的优先级列表,格式为 /。
以下是使用 logcat -v brief output 命令获得的简要 Logcat 输出的示例。它表明该消息与优先级“I”和标签“ActivityManager”有关:
I/ActivityManager( 585): 开始活动: Intent { action=android.intent.action…}
要将日志输出减少到可管理的级别,您可以使用过滤器表达式限制日志输出。
使用过滤器表达式怎么用计算器算反log,您可以向系统指示您感兴趣的标签/优先级组合,系统将抑制指定标签的其他消息。
过滤器表达式的格式为 tag:priority …,其中 tag 表示您感兴趣的标签,priority 表示可以为该标签报告的最低优先级。标有指定优先级或更高优先级的消息将写入日志。
您可以在过滤器表达式中提供任意数量的 tag:priority 规范。一系列规范用空格分隔。
以下是过滤器表达式的示例,它抑制标记为“ActivityManager”且优先级为“Info”或更高的日志消息,以及标记为“MyApp”且优先级为“Debug”或更高的日志消息除 log 之外的所有其他日志消息消息。
adb logcat ActivityManager:I MyApp:D *:S
上面表达式中的最后一个元素 *:S 将所有标签的优先级设置为“静默”,确保只显示标记为“ActivityManager”和“MyApp”的日志消息。
使用 *:S 是确保日志输出仅限于您明确指定的过滤器的绝佳方式,允许过滤器充当日志输出的“白名单”。
以下过滤器表达式显示优先级为“警告”或更高的所有标签的所有日志消息:
adb logcat *:W
如果您在开发计算机上运行 Logcat(而不是在远程 adb shell 上运行),您还可以通过导出环境变量 ANDROID_LOG_TAGS 的值来设置默认过滤器表达式:
export ANDROID_LOG_TAGS=”ActivityManager:I MyApp:D *:S”
控制日志输出格式
除了标签和优先级之外,日志消息还包含许多元数据字段。您可以修改消息的输出格式,以便它们显示特定的元数据字段。为此,您可以使用 -v 选项并指定以下支持的输出格式之一。
Brief:显示发出消息的进程的优先级、标志和 PID。
long:显示所有元数据字段并用空行分隔消息。
process:只显示PID。
raw:显示没有其他元数据字段的原始日志消息。
tag:仅显示优先级和标签。
thread:: Legacy 格式,显示发出消息的线程的优先级、PID 和 TID。
threadtime(默认):显示发布消息的线程的日期、调用时间、优先级、标签、PID 和 TID。
time:显示发出消息的进程的日期、调用时间、优先级、标志和 PID。
启动 Logcat 时怎么用计算器算反log,您可以使用 -v 选项指定所需的输出格式:
[adb] 日志猫 [-v]
以下示例显示如何使用输出格式线程生成消息:
adb logcat -v 线程
请注意,您只能使用 -v 选项指定一种输出格式,但可以指定任意数量的有意义的修饰符。Logcat 会忽略没有意义的修饰符。
格式修饰符
格式修饰符 根据以下一个或多个修饰符的任意组合更改 Logcat 输出。要指定格式修饰符,请使用 -v 选项,如下所示:
adb logcat -b 全部 -v 颜色 -d
每个 Android 日志消息都有一个与之关联的标志和优先级。您可以将任何格式修饰符与以下任何格式选项结合使用:brief、long、process、raw、tag、thread、threadtime 和 time。
您可以通过在命令行输入 logcat -v –help 来获取格式修饰符详细信息。
颜色:使用不同的颜色来显示每个优先级。
descriptive:显示日志缓冲区事件描述。此修饰符仅影响事件日志缓冲区消息,对其他非二进制缓冲区没有影响。事件描述取自 event-log-tags 数据库。
epoch:显示自 1970 年 1 月 1 日以来的时间(以秒为单位)。
单调:显示自上次启动以来的时间(以 CPU 秒为单位)。
可打印:确保所有二进制日志内容都被转义。
uid:如果访问控制允许,则显示已记录进程的 UID 或 Android ID。
usec:显示时间精确到微秒。
UTC:显示 UTC 时间。
年份:将年份添加到显示的时间。
zone:将本地时区添加到显示的时间。
查看备用日志缓冲区
Android日志系统为日志消息维护了多个环形缓冲区,并不是所有的日志消息都发送到默认的环形缓冲区。
要查看其他日志消息,您可以运行带有 -b 选项的 logcat 命令来请求查看备用环形缓冲区。您可以查看以下任何备用缓冲区:
radio:查看包含无线电/电话相关消息的缓冲区。
events:查看解密的二进制系统事件缓冲区消息。
main:查看主日志缓冲区(默认),不包括系统和崩溃日志消息。
system:查看系统日志缓冲区(默认)。
crash:查看崩溃日志缓冲区(默认)。
all:查看所有缓冲区。
默认值:报告主缓冲区、系统缓冲区和崩溃缓冲区。
以下是 -b 选项的用法:
[adb] 日志猫 [-b]
以下示例显示如何查看包含无线和电话相关消息的日志缓冲区。
adb logcat -b 收音机
或者,您可以为所有要输出的缓冲区指定多个 -b 标志,如下所示:
logcat -b 主要 -b 广播 -b 事件
您可以指定 -b 标志,后跟以逗号分隔的缓冲区列表,例如:
logcat -b 主要、广播、事件
请登录后发表评论
注册
社交帐号登录