Android日志监听工具logcat命令详解(转)

摘要:
Android日志系统提供了记录和查看系统调试信息的功能。logcat本身是android的shell的一个命令,你可以通过“adbshell”进入shell后执行logcat命令,也可以通过"adblogcat"直接运行。每一个输出的Android日志信息都有一个tag和它的优先级.日志的标签是系统部件原始信息的一个简要的标志。比如对于robin:D表示显示tag为robin的所有Debug及其以上优先级的日志。android.database.sqlite.SQLiteDatabase的logTimeStat()函数就是使用EventLog来进行日志输出的-c选项该选项用于清空你所指定的日志缓冲区。brief—Displaypriority/tagandPIDoforiginatingprocess.显示prority/tag,产生日志的进程的id,和日志消息本身。

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用.

在使用logcat之前,请确保手机的USB调试模式已经开启,可以通过"Setting->Application->Development->USB debugging"来开启。
logcat本身是android的shell的一个命令,你可以通过“adb shell”进入shell后执行logcat命令,也可以通过"adb logcat"直接运行。
语法:
[adb] logcat [<option>] ... [<filter-spec>] ...
选项:
-b<buffer> 指定要查看的日志缓冲区,可以是system,events,radio,main. 默认值是system和main。
-c清楚屏幕上的日志.
-d输出日志到屏幕上.
-f<filename> 指定输出日志信息的<filename> ,默认是stdout .
-g输出指定的日志缓冲区,输出后退出.
-n<count> 设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。
-r<kbytes> 每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用.
-s设置默认的过滤级别为silent.
-v<format> 设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output
参数<filter-spec>
参数<filter-spec>用于对某类的tag的日志输出进行过滤。每一个输出的Android日志信息都有一个tag和它的优先级.
日志的标签是系统部件原始信息的一个简要的标志。这个tag就是Log.i,Log.d,Log.i,Log.w,Log.e,Log.wtf系列函数中的tag.
对于System.out.print系列函数所对于的tag,其实就是"System.out"
<filter-spec>以“tag:priority”的形式来对日志输出进行过滤的
优先级priority有以下几种,按照从低到高顺利排列如下:
V— Verbose (lowest priority) 对应于Log.i()系列函数
D— Debug 对应于Log.d()系列函数
I— Info 对应于Log.i()系列函数
W— Warning 对应于Log.w()系列函数
E— Error 对应于Log.e()系列函数
F— Fatal 对应于Log.wtf()系列函数
S— Silent (highest priority, on which nothing s ever printed)
在运行logcat的时候在前两列的信息中你就可以看到 logcat 的标签列表和优先级别,它是这样标出的:<priority>/<tag> .
<filter-spec>中的优先级是指显示该优先级即其以上优先级得日志。比如对于robin:D表示显示tag为robin的所有Debug及其以上优先级的日志。<filter-spec>只是的针对某类的tag的日志进行过滤,如果有多个针对同一个tag的过滤的话,以最后一个为准。另外对于tag,可以使用通配符。对于在tag中没有使用统配符的<filter-spec>,我称它为显式的日志过滤器;而对于在tag中使用统配符的,我称它它为隐式的日志过滤器。如果这两种过滤器有对着同一个tag的过滤的话,以显示的日志过滤器为准。如果是同一种的话(显式/隐式),以后一个为准。
因为<filter-spec>只是指明了对某一类tag应该进行如何过滤,它没说明的其他tag,将采用系统默认的方式(*:V),即全部输出。我们可以通过选项"-s"来设置<filter-spec>中没有说明的tag来都不输出,相当于"*.S"
实例1:
adb logcat -s robin:i
这样将显现tag为robin的Info及以上优先级的所有的日志。该命令等同于adb logcat robin:i *:S
-b选项
该选项用于指定要操作的日志缓冲区,可以是system,events,radio,main.它们分别对应/dev/log文件夹下的system,events,radio,main日志文件 。系统默认的是system和main。该选项可以出现多次,以指定多个日志缓冲去。
比如:
adb logcat -b system -b main -b events -b radio -s robin:i
日志输出的开头几行说明了你当前查看的哪些日志缓冲区,比如上面的语句的前几行就是:
--------- beginning of /dev/log/radio
--------- beginning of /dev/log/events
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
其实“adb logcat -s robin:i”相当于“adb logcat -b system -b main -s robin:i”。我们的Log.i,Log.d,Log.i,Log.w,Log.e,Log.wtf系列函数及System.out.print系列函数以及System.erro.print系列都输出到了main缓冲区。因此我们一般用默认的就足够了。
events缓冲区对应的日志文件/system/etc/event-log-tags,使用android.util.EventLog生成的日志就输出到该缓冲区。
android.database.sqlite.SQLiteDatabase的logTimeStat()函数就是使用EventLog来进行日志输出的
-c选项
该选项用于清空你所指定的日志缓冲区。应该就是清除其对应的日志文件
-s选项
该选项将把tag的默认过滤级别设置为silent,这样tag默认就不显示。系统把tag的默认过滤级别是设置为Verbose,这样其tag默认就是要显示的。
-f选项
该选项指定输出日志信息的<filename> ,默认是stdout . 但是这里的文件是指android系统上的文件。如果我们想把日志输出到本地window系统的话,请采用如下形式的命令:
adb logcat -s robin:i>1.log
这样日志就输出了你的window的当前目录的1.log文件中。
-v选项
日志信息包括了许多元数据域包括标签和优先级。可以通过-v选项可以用来指定日志的输出格式,以显示出特定的元数据域。
brief—Display priority/tag and PID of originating process (the default format).显示prority/tag,产生日志的进程的id,和日志消息本身。它是日志默认的输出格式。
process—Display PID only.显示priority,产生日志的进程的id,和日志消息本身
tag—Display the priority/tag only.显示prority/tag,和消息本身
thread—Display process:thread and priority/tag only.显示priority,线程和日志消息本身
raw—Display the raw log message, with no other metadata fields.只显示消息本身
time—Display the date, invocation time, priority/tag, and PID of the originating process.显示产生日志的时间,prority/tag,产生日志的进程Id,和日志消息本身。
long—Display all metadata fields and separate messages with a blank lines.显示产生日志的时间,prority/tag,产生日志的进程Id,和日志消息本身。但是日志消息本身另其一行进行显示。每个日志之间空一行。
当启动了logcat,你可以通过-v 选项来指定输出格式:
[adb] logcat [-v <format>]
实例2:
adb logcat-v time-s robin:v
注意是通过-v 选项来设置输出格式.
更多:

免责声明:文章转载自《Android日志监听工具logcat命令详解(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇替换SQL Server字段中的换行符,回车符kali linux 配置嵌入式开发环境下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL 双主 + keepalived

参考:https://www.cnblogs.com/kevingrace/p/6710136.html MySQL双主复制 + keepalived 可以实现数据高可用。双主即互为master-slave,其中任意一个改变,另外一个会跟着改变(与主从不同,主从是单向);可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换。使用Keepa...

c# 利用百度图像处理【人像分割】一键抠图

百度AI开放平台-人像分割: http://ai.baidu.com/tech/body/seg 注意本文后面的话,百度这个技术效果太差劲了,国外这 https://www.remove.bg/ 个比百度强大很多。 using System; using System.Collections.Generic; using System.Linq; usin...

解决mongodb的安装mongod命令不是内部或外部命令

1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该目录下,这样就相当于安装了mongodb的相关命令。 为了启动mongodb方便,将mongod.exe路径加入环境变量,电脑->属性->高...

System.Transactions 事务超时属性

最近遇到一个处理较多数据的大事务,当进行至10分钟左右时,爆出事务超时异常,如果Machine.config中不设置最大超时时间,则默认超时时间为10分钟 MachineSettingsSection.MaxTimeout Property [TimeSpanValidatorAttribute(MinValueString = "00:00:00",...

JS输出为[object Object] 如何解决

[object Object] 直接转成json 二行js代码搞定 var str = Java.use('java.lang.String') console.log(' str ', str.$new(args1)) Des3Encrypt.sign.overload('[B','java.lang.String').implementation =...

VC中用到的几种调试输出TRACE的方法及其区别

最近一段陆续用了几种调试VC程序的方法。一般程序也肯定会使用到这几种方法。 现在总结如下: 1.在VC里面debug版本用TRACE自己打印trace到调试窗口。 局限就是,不能脱离了vc的环境进行调试。使用者只能是程序编写者来进行调试。 2。利用微软的调试工具Dbgview.exe,来看trace的输出,可以脱离vc的环境。 此方法与第一种的不同是,可以...