当前位置: 首页 > news >正文

Android的logcat日志详解

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 allAdditionally, 'kernel' for userdebug and eng builds, and'security' for Device Owner installations.Multiple -b parameters or comma separated list of buffers areallowed. 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 rotatedlog 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 whichevercomes first. Improves efficiency of polling by providingan 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 timeModifying adverbs can be added:color descriptive epoch monotonic printable uid usec UTC year zoneMultiple -v parameters or comma separated list of format and formatmodifiers 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 theassociated files and continue.Logd control:These options send a control message to the logd daemon on device, print its return message ifapplicable, 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 prunedwith higher priority otherwise they're pruned with lower priority. Allother pruning activity is oldest first. Special case ~! represents anautomatic pruning for the noisiest UID as determined by the currentstatistics.  Special case ~1000/! represents pruning of the worst PIDwithin 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> isan 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 notmatch the regex. Logcat will quit after printing the max-count numberof 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 asnumeric 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    InfoW    WarnE    ErrorF    FatalS    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,如果没有指明,就表示所有。

相关文章:

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具&#xff0c;可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志&#xff0c;或把日志保存到我们指定的位置。 可以输入 adb logcat --help&#xff0c;查看一下一些简…...

【Linux】:信号的保存和信号处理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来信号的保存和信号处理相关代码和知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入…...

深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常 2.1 意义 对于C、C程序开发来说&#xff0c;程序员需要维护每一个对象从开始到终结。Java的虚拟自动内存管理机制&#xff0c;让java程序员不需要手写delete或者free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;但是如果…...

跨境电商必备保护账号的4个网络环境设置

在跨境电商的世界里&#xff0c;一个稳定可靠的网络环境就是你事业成功的关键&#xff01;但是&#xff0c;不稳定的IP很容易导致账号被封&#xff0c;让你的辛苦付之东流&#xff0c;相信许多小伙伴也经历过莫名其妙的账号封禁情况&#xff01; 为了让大家避免这种心痛的情况…...

Python+requests接口自动化测试框架实例教程

前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&#xff0c;使用的…...

【网络安全】DNS重绑定原理详析

原创文章,不得转载。 文章目录 DNSDNS查询过程同源策略DNS重绑定攻击原理DNS重绑定攻击步骤DNS重绑定工具工具一工具二DNS 在网络中,访问网站实际上是通过其对应的 IP 地址实现的,然而,IP 地址往往难以记忆。因此,DNS(域名系统)应运而生。 DNS(Domain Name System)是…...

C语言初识编译和链接

目录 翻译环境和运行环境编译环境预编译编译词法分析语法分析语义分析 汇编 链接运行环境 翻译环境和运行环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执⾏的机器指令&#xff08;⼆进制指令&…...

TrinityCore环境搭建

1)https://192.168.3.96:41797/soft/app root jianan2)mysql322bb8f85b0920d9 192.168.3.96 9f5c813fefbbc3aa3) su wow cd /home/wow/TrinityCore/TrinityCore-TDB335.22061/build cmake ../ -DCMAKE_INSTALL_PREFIX/home/wow/server3.5.5 #构建项目cmake ../ -DCMAKE_INSTALL…...

Proteus 仿真设计:开启电子工程创新之门

摘要&#xff1a; 本文详细介绍了 Proteus 仿真软件在电子工程领域的广泛应用。从 Proteus 的功能特点、安装与使用方法入手&#xff0c;深入探讨了其在电路设计、单片机系统仿真、PCB 设计等方面的强大优势。通过具体的案例分析&#xff0c;展示了如何利用 Proteus 进行高效的…...

microchip dspic3一些奇怪问题

UART初始化&#xff0c;导致一些MCU PIN输出低电平。 https://microchip.my.site.com/s/case/500V4000007jvz4IAA/detail 板子上电EEPROM读取不稳定&#xff0c;增加延时解决问题。 –If delay 1ms, will read EE Err –If delay 10ms, program and reset, will read EE err.…...

FinOps原则:云计算成本管理的关键

导语&#xff1a; FinOps 原则为我们提供了北极星&#xff08;North Star&#xff09;&#xff0c;在我们实践云财务管理时指导我们的活动。这些原则由 FinOps 基金会成员制定&#xff0c;并通过经验磨练出来。 北极星&#xff08;North Star&#xff09;的含义&#xff1a; …...

JavaScript之如何优化模板字符串的性能

在 JavaScript 中&#xff0c;优化模板字符串的性能可以从几个方面入手。模板字符串&#xff08;Template Literals&#xff09;是 ES6 引入的特性&#xff0c;它们使用反引号 () 包围&#xff0c;可以嵌入表达式并支持多行字符串。虽然模板字符串通常很方便&#xff0c;但在性…...

不能将类型“null”分配给类型“number | undefined”。ts(2322)

错误解释&#xff1a; 这个TypeScript错误表明你正在尝试将null赋值给一个预期为number类型或undefined类型的变量。在TypeScript中&#xff0c;null和undefined是有效的值&#xff0c;但通常我们希望它们与number类型不兼容。 解决方法&#xff1a; 检查导致错误的赋值语句&…...

Nginx部署前端Vue项目详细教程

文章目录 Nginx部署前端Vue项目详细教程准备工作打包Vue项目安装Nginx配置Nginx创建配置文件启用配置文件 部署Vue项目配置SSL&#xff08;可选&#xff09;测试和验证总结 Nginx部署前端Vue项目详细教程 本教程将详细介绍如何使用Nginx部署前端Vue项目&#xff0c;涵盖从项目…...

kvm 虚拟机命令行虚拟机操作、制作快照和恢复快照以及工作常用总结

文章目录 kvm 虚拟机命令行虚拟机操作、制作快照和恢复快照一、kvm 虚拟机命令行虚拟机操作(创建和删除)查看虚拟机virt-install创建一个虚拟机关闭虚拟机重启虚拟机销毁虚拟机 二、kvm 制作快照和恢复快照**创建快照**工作常见问题创建快照报错&#xff1a;&#xff1a;intern…...

内网安全-横向移动【3】

1.域横向移动-内网服务-Exchange探针 Exchange是一个电子右键服务组件&#xff0c;由微软公司开发。它不仅是一个邮件系统&#xff0c;还是一个消息与协作系统。Exchange可以用来构建企业、学校的邮件系统&#xff0c;同时也是一个协作平台&#xff0c;可以基于此开发工作流、…...

语言中的浮点数

浮点数相比定点数或者整数&#xff0c;为了处理小数点引入了指数&#xff0c;导致小数点的位置根据不同浮点数而不同&#xff0c;故名为Floating Point Number. 一般而言&#xff0c;IEEE754标准被大部分编程语言的浮点数使用&#xff0c;它节省了浮点数的保存空间。如不然&…...

Pyspark下操作dataframe方法(1)

文章目录 Pyspark dataframe创建DataFrame使用Row对象使用元组与scheam使用字典与scheam注意 agg 聚合操作alias 设置别名字段设置别名设置dataframe别名 cache 缓存checkpoint RDD持久化到外部存储coalesce 设置dataframe分区数量collect 拉取数据columns 获取dataframe列 Pys…...

注解实现json序列化的时候自动进行数据脱敏

最近在进行开发的时候遇到一个问题&#xff0c;需要对用户信息进行脱敏处理&#xff0c;原有的方式是写一个util类&#xff0c;在需要脱敏的字段查出数据后&#xff0c;显示掉用方法处理后再set回去&#xff0c;觉得这种方式能实现功能&#xff0c;但是不是特别优雅&#xff0c…...

使用Python下载文件的简易指南

在日常的数据处理、自动化任务或软件开发中&#xff0c;经常需要从网络上下载文件。Python作为一门功能强大的编程语言&#xff0c;提供了多种方法来实现文件的下载。本文将介绍几种常用的方法来使用Python下载文件&#xff0c;包括使用requests库和urllib库。 准备工作 在开…...

告别繁琐安装:用快马平台在线IDE实现零配置编程初体验

最近在尝试学习编程时&#xff0c;发现很多新手都会卡在开发环境配置这一步。传统的IDE安装过程不仅耗时&#xff0c;还可能遇到各种环境变量配置问题。作为一个过来人&#xff0c;我想分享一个更简单的解决方案——直接在浏览器里就能完成编程初体验。 为什么需要在线IDE 刚开…...

实在 Agent 和通用大模型有什么不一样?深度拆解 AI Agent 的感知、决策与执行逻辑

获取系统时间这一任务&#xff0c;虽然看似简单&#xff0c;却深刻揭示了 AI Agent 与通用大模型在本质、能力、架构和应用场景上的根本性差异。通用大模型&#xff08;LLM&#xff09;&#xff0c;如 GPT、Claude 或通义千问等&#xff0c;其核心是基于海量文本数据训练出的概…...

ArcGIS重分类实战:手把手教你搞定SWAT模型土地利用数据库(附CNLUCC对照表)

ArcGIS重分类实战&#xff1a;从CNLUCC到SWAT模型土地利用数据库的完整指南 当你第一次打开SWAT模型准备进行水文模拟时&#xff0c;最令人头疼的环节之一就是处理土地利用数据。作为中国研究者&#xff0c;我们手头往往只有CNLUCC分类的土地利用栅格数据&#xff0c;而SWAT模型…...

影墨·今颜GPU利用率提升方案:4-bit NF4量化让FLUX.1-dev响应提速300%

影墨今颜GPU利用率提升方案&#xff1a;4-bit NF4量化让FLUX.1-dev响应提速300% 1. 引言&#xff1a;当艺术创作遇上性能瓶颈 如果你用过AI绘画工具&#xff0c;尤其是那些追求极致写实效果的&#xff0c;大概率经历过这样的等待&#xff1a;输入一段精心构思的描述&#xff…...

多模态融合新思路:POE在图像与文本数据融合中的5个实战案例

多模态融合新思路&#xff1a;POE在图像与文本数据融合中的5个实战案例 当图像遇见文字&#xff0c;机器如何像人类一样理解两者之间的微妙联系&#xff1f;这正是多模态学习试图解决的核心问题。在医疗影像分析、自动驾驶、智能客服等场景中&#xff0c;单一模态的数据往往存在…...

C语言入门:了解历史与适用人群

要是您身为一名刚开始接触学习事物的人&#xff0c;再者您尚未弄明白何种属于编程语言&#xff0c;那就去瞧瞧这个了&#xff1a;什么是编程语言。 若您先前未曾接触过任何一种编程语言&#xff0c;或者您并不明白为何要是学习C语言来着&#xff0c;请看&#xff1a;为什么C语言…...

3分钟搞定:Source Code Pro字体终极配置指南,让代码阅读体验提升300%

3分钟搞定&#xff1a;Source Code Pro字体终极配置指南&#xff0c;让代码阅读体验提升300% 【免费下载链接】source-code-pro Monospaced font family for user interface and coding environments 项目地址: https://gitcode.com/gh_mirrors/so/source-code-pro 你是…...

ESXi 8.0 无法选择分区方式 小白级详细解决办法

本文针对 ESXi 8.0 安装 / 使用中无法选择分区方式、看不到分区选项、分区界面灰掉、提示分区不支持等问题&#xff0c;从根源排查到终极修复&#xff0c;全程纯文字、步骤拆解到最小操作&#xff0c;小白照着做就能解决&#xff0c;无任何表格。一、先明确&#xff1a;什么是 …...

requests - 简单好用的HTTP请求库

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求处理Cookie、会话等复杂性自动解压缩内容处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a;…...

零基础也能挖洞赚钱?SRC漏洞挖掘从入门到精通,附全套工具包+学习路线!

开篇&#xff1a;为什么说SRC挖洞是安全新手的最佳起点&#xff1f; 凌晨两点&#xff0c;大学生张三盯着电脑屏幕突然跳出的「高危漏洞奖励到账」提示&#xff0c;手抖得差点打翻泡面——这是他挖到人生第一个SRC漏洞&#xff08;某电商平台的越权访问漏洞&#xff09;后收到…...