adb logcat 查询过滤日志

2024-09-02 00:48
文章标签 日志 查询 adb 过滤 logcat

本文主要是介绍adb logcat 查询过滤日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Logcat 命令行工具

Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从你的应用使用 Log 类写入的消息。

日志记录系统概览

Android 日志记录系统是系统进程 logd 维护的一组结构化环形缓冲区。这组可用的缓冲区是固定的,并由系统定义。最相关的缓冲区为:main(用于存储大多数应用日志)、system(用于存储源自 Android 操作系统的消息)和 crash(用于存储崩溃日志)。每个日志条目都包含一个优先级(VERBOSE、DEBUG、INFO、WARNING、ERROR 或 FATAL)、一个标识日志来源的标记以及实际的日志消息。

 

日志标记

  • 日志消息的标记是一个简短的字符串,指示消息所源自的系统组件(例如,“View”表示视图系统)。

日志级别

  • 优先级是以下字符值之一(按照从最低到最高优先级的顺序排列):
  • V:详细(最低优先级)
  • D:调试
  • I:信息
  • W:警告
  • E:错误
  • F:严重错误
  • S:静默(最高优先级,绝不会输出任何内容)

日志过滤

1.按关键字过滤

$ adb logcat -e alipay

2.按关键字过滤(在adb shell中)

$ adb shell
#  logcat | grep alipay

3.按日志标记过滤

 adb logcat app_process:V *:S

4.按日志等级过滤

日志输出格式

除标记和优先级外,日志消息还包含许多元数据字段。您可以修改消息的输出格式,以便它们显示特定的元数据字段。为此,您可以使用 -v 选项,并指定下列某一受支持的输出格式。

  • brief:显示优先级、标记以及发出消息的进程的 PID。
  • long:显示所有元数据字段,并使用空白行分隔消息。
  • process:仅显示 PID。
  • raw:显示不包含其他元数据字段的原始日志消息。
  • tag:仅显示优先级和标记。
  • thread::旧版格式,显示优先级、PID 以及发出消息的线程的 TID。
  • threadtime(默认值):显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。
  • time:显示日期、调用时间、优先级、标记以及发出消息的进程的 PID。

启动 Logcat 时,您可以使用 -v 选项指定所需的输出格式:

[adb] logcat [-v <format>]

以下示例显示了如何生成输出格式为 thread 的消息:

adb logcat -v thread

请注意,您只能使用 -v 选项指定一种输出格式,但可以指定任意数量的有意义的修饰符。Logcat 会忽略没有意义的修饰符。

 

格式修饰符

格式修饰符依据以下一个或多个修饰符的任意组合更改 Logcat 输出。如要指定格式修饰符,请使用 -v 选项,如下所示:

adb logcat -b all -v color -d

每个 Android 日志消息都有一个与之相关联的标记和优先级。您可以将任何格式修饰符与以下任一格式选项进行组合:brief、long、process、raw、tag、thread、threadtime 和 time。

您可以通过在命令行中输入 logcat -v --help 获取格式修饰符详细信息。

  • color:使用不同的颜色来显示每个优先级。
  • descriptive:显示日志缓冲区事件说明。此修饰符仅影响事件日志缓冲区消息,不会对其他非二进制文件缓冲区产生任何影响。事件说明取自 event-log-tags 数据库。
  • epoch:显示自 1970 年 1 月 1 日以来的时间(以秒为单位)。
  • monotonic:显示自上次启动以来的时间(以 CPU 秒为单位)。
  • printable:确保所有二进制日志记录内容都进行了转义。
  • uid:如果访问控制允许,则显示 UID 或记录的进程的 Android ID。
  • usec:显示精确到微秒的时间。
  • UTC:显示 UTC 时间。
  • year:将年份添加到显示的时间。
  • zone:将本地时区添加到显示的时间。

命令行选项

选项

说明

-b <buffer>

加载可供查看的备用日志缓冲区,例如 events 或 radio。默认使用 main、system 和 crash 缓冲区集。请参阅查看备用日志缓冲区。

-c, --clear

清除(清空)所选的缓冲区并退出。默认缓冲区集为 main、system 和 crash。如需清除所有缓冲区,请使用 -b all -c。

-e <expr>, --regex=<expr>

只输出日志消息与 <expr> 匹配的行,其中 <expr> 是正则表达式。

-m <count>, --max-count=<count>

输出 <count> 行后退出。这样是为了与 --regex 配对,但可以独立运行。

--print

与 --regex 和 --max-count 配对,使内容绕过正则表达式过滤器,但仍能够在获得适当数量的匹配时停止。

-d

将日志转储到屏幕并退出。

-f <filename>

将日志消息输出写入 <filename>。默认值为 stdout。

-g, --buffer-size

输出指定日志缓冲区的大小并退出。

-n <count>

将轮替日志的数量上限设置为 <count>。默认值为 4。需要使用 -r 选项。

-r <kbytes>

每输出 <kbytes> 时轮替日志文件。默认值为 16。需要 -f 选项。

-s

相当于过滤器表达式 '*:S';它将所有标记的优先级设为“静默”,并用于放在可添加内容的过滤器表达式列表之前。如需了解详情,请转到介绍过滤日志输出的部分。

-v <format>

设置日志消息的输出格式。默认格式为 threadtime。如需查看支持的格式列表,请参阅介绍控制日志输出格式的部分。

-D, --dividers

输出各个日志缓冲区之间的分隔线。

-c

清空(清除)整个日志并退出。

-t <count>

仅输出最新的行数。此选项包括 -d 功能。

-t '<time>'

输出自指定时间以来的最新行。此选项包括 -d 功能。如需了解如何引用带有嵌入空格的参数,请参阅 -P 选项。


adb logcat -t '01-26 20:52:41.820'

-T <count>

输出自指定时间以来的最新行数。此选项不包括 -d 功能。

-T '<time>'

输出自指定时间以来的最新行。此选项不包括 -d 功能。如需了解如何引用带有嵌入空格的参数,请参阅 -P 选项。


adb logcat -t '01-26 20:52:41.820'

-L, -last

在最后一次重新启动之前转储日志。

-B, --binary

以二进制文件形式输出日志。

-S, --statistics

在输出中包含统计信息,以帮助您识别和定位日志垃圾信息发送者。

-G <size>

设置日志环形缓冲区的大小。可以在结尾处添加 K 或 M,以指示单位为千字节或兆字节。

-p, --prune

输出(读取)当前的允许 (white) 列表和拒绝 (black) 列表,不采用任何参数,如下所示:


adb logcat -p

-P '<list> ...'

--prune '<list> ...' -P '<white_and_black_list>'

写入(设置)允许 (white) 列表和拒绝 (black) 列表以出于特定目的调整日志记录内容。您可以提供允许 (<white>) 列表和拒绝 (~<black>) 列表条目的混合内容,其中 <white> 或 <black> 可以是 UID、UID/PID 或 /PID。在 Logcat 统计信息 (logcat -S) 的指导下,您可以考虑出于各种目的调整允许 (white) 列表和拒绝 (black) 列表,例如:

默认情况下,日志记录系统会自动以动态方式阻止日志统计信息中最严重的违规内容,以便为新的日志消息腾出空间。一旦它用尽启发法,系统便会删除最旧的条目,以便为新消息腾出空间。

添加许可名单 (whitelist) 可保护您的 Android 识别码 (AID),它会变成进程的 AID 和 GID,而不会被声明为违规内容;添加拒绝列表有助于在相应内容被视为最严重的违规内容之前即释放空间。您可以选择删除内容的程度和频率;也可以关闭删除功能,这样,系统便仅会移除各个日志缓冲区中最旧条目的内容。

引号

adb logcat 不会保留引号,因此指定允许 (white) 列表和拒绝 (black) 列表的语法如下所示:


$ adb logcat -P '"<white_and_blacklist>"'

or

adb shell
$ logcat -P '<white_and_blacklist>'

以下示例指定了一个包含 PID 32676 和 UID 675 的允许 (white) 列表,以及一个包含 PID 32677 和 UID 897 的拒绝 (black) 列表。拒绝列表中的 PID 32677 经过加权处理,以便可以更快删除。


adb logcat -P '"/32676 675 ~/32677 897"'

其他您可以使用的允许 (white) 列表和拒绝 (black) 列表命令变体如下所示:


~! worst uid blacklist
~1000/! worst pid in system (1000)

  • 通过 UID 选择使特定日志记录内容具有最长保留期限。
  • 阻止人 (UID) 或物 (PID) 消耗相应资源,以帮助增加日志跨度,从而更深入地了解正在诊断的问题。

--pid=<pid> ...

仅输出来自给定 PID 的日志。

--wrap

休眠 2 小时或者当缓冲区即将封装时(两者取其先)。通过提供即将封装唤醒来提高轮询的效率。

这篇关于adb logcat 查询过滤日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128523

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

ural 1026. Questions and Answers 查询

1026. Questions and Answers Time limit: 2.0 second Memory limit: 64 MB Background The database of the Pentagon contains a top-secret information. We don’t know what the information is — you

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a