Android的logcat日志详解

news2025/1/11 20:45:33

Android log系统

logcat介绍

logcatandroid中的一个命令行工具,可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志,或把日志保存到我们指定的位置。

可以输入 adb logcat --help,查看一下一些简单的数据格式:

adb logcat --help

输出结果:

Usage: logcat [options] [filterspecs]

General options:
  -b, --buffer=<buffer>       Request alternate ring buffer(s):
                                main system radio events crash default all
                              Additionally, 'kernel' for userdebug and eng builds, and
                              'security' for Device Owner installations.
                              Multiple -b parameters or comma separated list of buffers are
                              allowed. Buffers are interleaved.
                              Default -b main,system,crash,kernel.
  -L, --last                  Dump logs from prior to last reboot from pstore.
  -c, --clear                 Clear (flush) the entire log and exit.
                              if -f is specified, clear the specified file and its related rotated
                              log files instead.
                              if -L is specified, clear pstore log instead.
  -d                          Dump the log and then exit (don't block).
  --pid=<pid>                 Only print logs from the given pid.
  --wrap                      Sleep for 2 hours or when buffer about to wrap whichever
                              comes first. Improves efficiency of polling by providing
                              an about-to-wrap wakeup.

Formatting:
  -v, --format=<format>       Sets log print format verb and adverbs, where <format> is one of:
                                brief help long process raw tag thread threadtime time
                              Modifying adverbs can be added:
                                color descriptive epoch monotonic printable uid usec UTC year zone
                              Multiple -v parameters or comma separated list of format and format
                              modifiers are allowed.
  -D, --dividers              Print dividers between each log buffer.
  -B, --binary                Output the log in binary.

Outfile files:
  -f, --file=<file>           Log to file instead of stdout.
  -r, --rotate-kbytes=<n>     Rotate log every <n> kbytes. Requires -f option.
  -n, --rotate-count=<count>  Sets max number of rotated logs to <count>, default 4.
  --id=<id>                   If the signature <id> for logging to file changes, then clear the
                              associated files and continue.

Logd control:
 These options send a control message to the logd daemon on device, print its return message if
 applicable, then exit. They are incompatible with -L, as these attributes do not apply to pstore.
  -g, --buffer-size           Get the size of the ring buffers within logd.
  -G, --buffer-size=<size>    Set size of a ring buffer in logd. May suffix with K or M.
                              This can individually control each buffer's size with -b.
  -S, --statistics            Output statistics.
                              --pid can be used to provide pid specific stats.
  -p, --prune                 Print prune rules. Each rule is specified as UID, UID/PID or /PID. A
                              '~' prefix indicates that elements matching the rule should be pruned
                              with higher priority otherwise they're pruned with lower priority. All
                              other pruning activity is oldest first. Special case ~! represents an
                              automatic pruning for the noisiest UID as determined by the current
                              statistics.  Special case ~1000/! represents pruning of the worst PID
                              within AID_SYSTEM when AID_SYSTEM is the noisiest UID.
  -P, --prune='<list> ...'    Set prune rules, using same format as listed above. Must be quoted.

Filtering:
  -s                          Set default filter to silent. Equivalent to filterspec '*:S'
  -e, --regex=<expr>          Only print lines where the log message matches <expr> where <expr> is
                              an ECMAScript regular expression.
  -m, --max-count=<count>     Quit after printing <count> lines. This is meant to be paired with
                              --regex, but will work on its own.
  --print                     This option is only applicable when --regex is set and only useful if
                              --max-count is also provided.
                              With --print, logcat will print all messages even if they do not
                              match the regex. Logcat will quit after printing the max-count number
                              of lines that match the regex.
  -t <count>                  Print only the most recent <count> lines (implies -d).
  -t '<time>'                 Print the lines since specified time (implies -d).
  -T <count>                  Print only the most recent <count> lines (does not imply -d).
  -T '<time>'                 Print the lines since specified time (not imply -d).
                              count is pure numerical, time is 'MM-DD hh:mm:ss.mmm...'
                              'YYYY-MM-DD hh:mm:ss.mmm...' or 'sssss.mmm...' format.
  --uid=<uids>                Only display log messages from UIDs present in the comma separate list
                              <uids>. No name look-up is performed, so UIDs must be provided as
                              numeric values. This option is only useful for the 'root', 'log', and
                              'system' users since only those users can view logs from other users.

filterspecs are a series of
  <tag>[:priority]

where <tag> is a log component tag (or * for all) and priority is:
  V    Verbose (default for <tag>)
  D    Debug (default for '*')
  I    Info
  W    Warn
  E    Error
  F    Fatal
  S    Silent (suppress all output)

'*' by itself means '*:D' and <tag> by itself means <tag>:V.
If no '*' filterspec or -s on command line, all filter defaults to '*:V'.
eg: '*:S <tag>' prints only <tag>, '<tag>:S' suppresses all <tag> log messages.

If not specified on the command line, filterspec is set from ANDROID_LOG_TAGS.

If not specified with -v on command line, format is set from ANDROID_PRINTF_LOG
or defaults to "threadtime"

log类是一个日志类,可以在代码中使用logcat打印出消息。常见的日志记录方法包括。

方法

描述

v(String,String) (vervbose)

显示全部信息

d(String,String)(debug)

显示调试信息

i(String,String)(information)

显示⼀般信息

w(String,String)(waning)

显示警告信息

e(String,String)(error)

显示错误信息

例如:

// 开发过程中获取 log
Log.i("MyActivity","MyClass.getView() - get item number"+position);
//adb 获取 log
adb logcat
adb logcat 输出的⽇志格式如下:
I/ActivityManager( 1754): Waited long enough for: ServiceRecord{2b24178c u0
com.google.android.gms/.checkin.CheckinService}

logcat命令格式

语法格式:

[adb] logcat [] … [ ] …
PC 端使⽤: adb logcat
shell 模式下使⽤: logcat

logcat缓冲区

缓冲区介绍

Android 日志系统为日志消息保留了多个环形缓冲区,但并非多有的日志消息都会发送到默认的环形缓冲区。这里可以采用 logcat -b 命令查看设备的其他缓冲区:

缓冲区

描述

举例

radio

输出通信系统的日志,包含无线装置/电话相关消息

logcat -b radio

events

输出event模块的日志

logcat -b events

main

主日志缓冲区(默认),不包含系统和崩溃日志消息

logcat -b main

system

输出系统日志

logcat -b system

crash

输出崩溃日志

logcat -b crash

all

输出所有缓冲区日志

logcat -b all

default

输出main、system、crash缓冲区日志

logcat -b default

缓冲区模型

logcat命令参数

参数

含义

举例

-b

加载⼀个可使⽤的⽇志缓冲区供查看,⽐如 event和 radio 。默认值是 main

logcat -b system

-B

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

-c

清除缓冲区中的全部⽇志并退出(清除完后可以使⽤ -g 查看缓冲区)默认清除 mainsystemcrash

logcat -c;logcat -b all -c

-d

将缓冲区的 log 转存到屏幕中然后退出

logcat -d > log.txt

-f <file>

将 log 输出到指定的⽂件中 < ⽂件名 >. 默认为标准输出( stdout )

logcat -f sdcard/log.txt

-g

打印⽇志缓冲区的大小并退出

logcat -g

-G

设置日志环形缓冲区的大小,可以在结尾处添加 KM

logcat -G 2M

-n <count>

设置⽇志的最⼤数⽬,默认值是 4 ,需要和 -r 选项⼀起使⽤

-r <kbytes>

每时输出⽇志,默认值是 16 ,需要和 -f 选项⼀起使⽤

logcat -f sdcard/log.txt -r 1

-s

输出指定 tag 的日志,相当于过滤器表达式 *:S

logcat -s tag

-S

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

-v <format>

设置输出格式的⽇志消息。默认是短暂的格式。⽀持的格式列表

logcat -v threadtime

-m <count>

输出 行后退出

logcat -m 5

-D

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

logcat -D …

-e <expr>

输出正则匹配的日志消息

logcat -e [匹配数据] -m 5

-t <count>

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

logcat -t 5

-t '<time>'

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

logcat -t ‘01-26 20:52:41.820’

--pid=<pid>

仅输出来自给定 PID 的日志

logcat --pid=4321

⼀般⻓时间输出 log 的话建议 -f , -n , -r 三个参数连⽤,这样当⼀个⽂件⽇志输出满了之后可以⻢上在另⼀个中进⾏输出。

Android 日志系统为日志消息保留了多个环形缓冲区,但并非多有的日志消息都会发送到默认的环形缓冲区。

logcat -blogcat 命令的一个选项,用于指定查看日志缓冲区。你可以用它来查看不同类型的日志缓冲区。下面是基本用法:

logcat -b events|grep -E "am_proc_start|input_focus.*entering"

基本命令格式:

shCopy Code
adb logcat -b <buffer>

选项说明:

  • main: 默认缓冲区,包含大多数应用程序和系统日志。

  • system: 系统日志缓冲区,包含系统服务和硬件相关日志。

  • events: 事件日志缓冲区,记录系统事件和调试信息。

  • crash: 崩溃日志缓冲区,记录应用崩溃的信息。

示例用法:

  • 查看主缓冲区日志:

shCopy Code
adb logcat -b main
  • 查看系统缓冲区日志:

shCopy Code
adb logcat -b system
  • 查看事件缓冲区日志:

shCopy Code
adb logcat -b events
  • 查看崩溃缓冲区日志:

shCopy Code
adb logcat -b crash

这些选项帮助你根据需要过滤和查看不同类型的日志数据。

logcat格式化输出

参数说明

⽇志消息包含⼀个元数据字段,除了标签和优先级,您可以修改输出显示⼀个特定的元数据字段格式的消息。为此,您使⽤-v 选项来指定⼀个⽀持的输出格式。⼀下为⽀持的格式:

格式

含义

brief

显示优先级 / 标记和过程的 PID 发出的消息(默认格式)

process

只显示PID

tag

只显示优先级/标记

raw

显示原始的⽇志消息,没有其他元数据字段

time

调⽤显示⽇期、时间、优先级 / 标签和过程的 PID 发出消息

thread

旧版格式,显示优先级、PID 以及发出消息的线程的 TID

threadtime

调⽤显示⽇期、时间、优先级、标签遗迹 PID TID线程发出的消息

long

显示所有元数据字段与空⽩⾏和单独的消息

color

使用不同的颜色来显示每个优先级

descriptive

显示日志缓冲区事件说明。此修饰符仅影响事件日志缓冲区消息,不会对其他非二进制文件缓冲区产生任何影响

epoch

显示自 1970 年 1 月 1 日以来的时间(以秒为单位)

uid

如果访问控制允许,则显示 UID 或记录的进程的 Android ID

usec

显示精确到微秒的时间

UTC

显示 UTC 时间

year

将年份添加到显示的时间

zone

将本地时区添加到显示的时间

当 logcat 开始,指定想要输出格式 -v 选项:

[adb] logcat [-v ]
adb logcat –v thread

只能指定⼀个输出格式 -v。

logcat优先级

按日志级别过滤日志:

adb logcat <tag>[:priority]

tag 表示标签;priority 表示输出级别;

日志默认级别是 V,如果错误日志我们选择 E 就可以,Android 的日志分为如下几个优先级(priority):

选项

描述

举例

V

–Verbose(最低优先级)

adb logcat *:V

D

– Debug

adb logcat *:D

I

– Info

adb logcat *:I

W

– Warning

adb logcat *:W

E

– Error

adb logcat *:E

F

– Fatal

adb logcat *:F

S

– Silent

adb logcat *:S

*可以是某个tag,如果没有指明,就表示所有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xinstall助力App全渠道统计,参数传递下载提升用户体验!

在移动互联网时代&#xff0c;App已成为我们日常生活中不可或缺的一部分。然而&#xff0c;对于App开发者来说&#xff0c;如何有效地推广和运营自己的应用&#xff0c;却是一个不小的挑战。尤其是在面对众多渠道、复杂的数据统计和用户需求多样化的情况下&#xff0c;如何精准…

【ffmpeg】转换音频格式

在音频文件所在目录启动终端输入以下 ffmpeg -y -i original.aac target.mp3-y 如果输出文件已经存在&#xff0c;则覆盖它而不询问。 执行完毕后在当前文件夹目录下生成目标文件

项目9-网页聊天室9(测试报告)

1.项目背景 本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室&#xff0c;与其他在线用户实时交 流。系统支持文字消息的快速发送和接收、消息实时推送&#xff0c;确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效的 数据…

学习笔记--MybatisPlus

官网&#xff1a;MyBatis-Plus &#x1f680; 为简化开发而生 快速入门 入门案例 引入MybatisPlus的起步依赖 定义Mapper 问题&#xff1a; MybatisPlus中Invalid bound statement (not found): com.itheima.mp.mapper.UserMapper.insert 一定要指定实体类&#xff01;&am…

ASTER 地表动能温度 (AST_08) 是利用 8 至 12 µm 光谱范围内的五个热红外波段

ASTER L2 Surface Temperature V00 简介 ASTER 地表动能温度 (AST_08) 是利用 8 至 12 m 光谱范围内的五个热红外波段&#xff08;白天或夜间获取&#xff09;生成的 (https://lpdaac.usgs.gov/documents/996/ASTER_Earthdata_Search_Order_Instructions.pdf)。 它只包含陆地…

Slideflow:数字病理学中的深度学习与全切片可视化工具库|文献精析·24-09-02

小罗碎碎念 群里今天有人提问Histolab相关的问题&#xff0c;作者在交流的过程中谈到了Slideflow&#xff0c;恰好我没有看过这篇文章&#xff0c;所以便有了这期推文。 作者角色作者姓名单位名称&#xff08;英文&#xff09;单位名称&#xff08;中文&#xff09;第一作者Jam…

性能工具之 JProfiler 简单登录案例分析实战

文章目录 一、前言二、准备工作三、使用JProfile定位问题四、登陆案例分析四、总结 一、前言 JProfiler是一款 Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况&#xff08;阻塞、等待等&#xff09;&#xff0c;同时可以查找应…

66、脑机接口产业联盟天津第一次全体大会参会分享

我注意到脑机联盟网上搜不到第一次和第二次大会的有关资料&#xff0c;这是非常遗憾的&#xff0c;所以我根据自己参会的记录&#xff0c;写成文章&#xff0c;与各位同学分享&#xff0c;此课件我也做成了公开课讲解&#xff0c;连接在我的Github。写这些&#xff0c;也算是为…

uAI - AI Assistant 人工智能辅助助手插件

uAI助手支持GPT 3.5 Turbo、GPT 3.5 Turbo16K、GPT 4-8k和GPT 4 Turbo-128k 什么是uAI助理? uAI Assistant是Unity游戏引擎的强大扩展,它使用GPT AI帮助游戏开发人员轻松创建专业代码和引人入胜的游戏内容。 你需要一个OpenAI密钥才能使用uAI助手!阅读我们的文档以获取更多说…

PDF 格式的文件编辑难度非常大,相比 .docx格式,它存在的意义是什么?

知乎上有个热门问题&#xff0c;PDF 格式的文件编辑难度非常大&#xff0c;相比 .docx格式&#xff0c;它存在的意义是什么&#xff1f; 回答这个问题得承认一个大前提&#xff0c;PDF是用来查看的&#xff0c;而不是编辑的。 否则就相当于提问&#xff0c;詹姆斯的足球踢得并…

Qt基础类03-直线类QLine

Qt基础类03-直线类QLine 摘要基本信息成员函数程序全貌QLine::QLine()QLine::QLine(const QPoint &p1, const QPoint &p2)QLine::QLine(int x1, int y1, int x2, int y2)QPoint QLine::p1() constQPoint QLine::p2() constint QLine::x1() constint QLine::x2() consti…

ComfyUI+Krea免费利用AI制作网站萌宠IP,五步搞定制作AI萌宠

大家好&#xff0c;这是我们网站的萌宠——Meo喵&#xff0c;是一只猫咪AI工具专家&#x1f43e;&#xff0c;嘻嘻&#x1f389;&#x1f431;。是AIGC年轻的艺术家星之&#xff0c;利用AI产品ComfyUI、Krea&#xff0c;搭配PS制作而成&#xff0c;下面先介绍一下它的形象&…

LLM大模型教程:langchain 教程

软件安装 pip install pymupdf pip install langchain pip install langchain-cli conda install -c pytorch -c nvidia faiss-gpu1.7.4 mkl2021 blas1.0mkl由于langchain不支持qwen模型&#xff0c;我们需要自定义模型 from typing import Anyfrom langchain_core.language_…

‌Python开发者必学:如何优雅地绕过round函数的四舍五入陷阱

引言 在最近交付测试的一个功能中&#xff0c;测试同学反馈一个数据统计四舍五入的问题&#xff0c;问题有点魔性&#xff1a;同样的条件&#xff0c;有的值可以四舍五入成功&#xff0c;有的值直接被舍弃。 例如2.5四舍五入整数直接变成了2&#xff1b;3.5却变成了4。因为使用…

IDEA 模板配置

IDEA 模板配置 一、tkMapper通用mapper配置 1 新建配置文件generatorConfig.xml&#xff0c;路径src/main/resources/generator/generatorConfig.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-…

基于单片机的多功能电子钟设计

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP…

C学习(数据结构)-->排序

目录 一、直接插入排序 二、希尔排序 三、直接选择排序 四、快速排序 1、取基准值 1&#xff09;hoare找基准值​编辑 2&#xff09; 挖坑法找基准值​编辑 3&#xff09;快慢指针找基准值​编辑 2、递归快速排序 3、非递归快速排序 ​编辑 五、归并排序 ​编辑 六、计…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 9月7日,星期六

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年9月7日 星期六 农历八月初五 白露 1、 司法部&#xff1a;遏制地方乱发文、出台“奇葩”政策文件等情况。 2、 证监会&#xff1a;拉长离职人员入股禁止期至10年&#xff0c;扩大对离职人员从严监管范围。 3、 全国医护比…

三文带你轻松上手鸿蒙的AI语音03-文本合成声音

三文带你轻松上手鸿蒙的AI语音03-文本合成声音 前言 接上文 三文带你轻松上手鸿蒙的AI语音02-声音文件转文本 HarmonyOS NEXT 提供的AI 文本合并语音功能&#xff0c;可以将一段不超过10000字符的文本合成为语音并进行播报。 场景举例 手机在无网状态下&#xff0c;系统应用…

超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)

超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平&#xff0c;所以直接设置成 普通的GPIO端口即可&#xff1b;回响信号使用外部中断&#xff0c;上升沿信号产生外部中断&#xff0c;打开定时器&#xff0c;下降沿再产生一次中断&#xff0c;读…