logcat的基本使用

一、logcat命令介绍

1.android log系统

2.logcat介绍

logcat是android中的一个命令行工具,可以用于得到程序的log信息。

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

 LogCat可以实时的捕捉系统中的log信息,这样测试过程中,有助于帮助我们收集信息,当出现问题的时候,能够更加快速、准确的定位。


logcat命令格式:

语法格式:

[adb] logcat [<option>] … [<filter – spec>] …

PC端使用:

adb logcat

shell模式下使用:

logcat

二、logcat命令参数

1.参数说明

参数

描述

-b <buffer> 加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main
-c 清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区)
-d 将缓冲区的log转存到屏幕中然后退出
-f <filename> 将log输出到指定的文件中<文件名>.默认为标准输出(stdout)
-g 打印日志缓冲区的大小并退出
-n <count> 设置日志的最大数目<count>,默认值是4,需要和-r选项一起使用
-r <kbytes> 每<kbytes>时输出日志,默认值是16,需要和-f选项一起使用
-s 设置过滤器
-v <format>

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

-t <count> 将缓冲区的log输出指定的行数到屏幕中然后退出
-B 以二进制形式输出日志


2、参数详解

1)-v

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

格式

说明

brief 显示优先级/标记和过程的PID发出的消息(默认格式)
process 只显示PID
tag 只显示优先级/标记
raw 显示原始的日志消息,没有其他元数据字段
time 调用显示日期、时间、优先级/标签和过程的PID发出消息
threadtime 调用显示日期、时间、优先级、标签以及PID TID线程发出的消息
long 显示所有元数据字段与空白行和单独的消息

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

[adb] logcat [-v <format>]

举例:adb logcat –v thread

只能指定一个输出格式-v

2)-b
举例:adb logcat –b 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


缓冲区介绍:

android log输出量巨大,特别是通信系统的log,因此,android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:

1)Radio:输出通信系统的log

2)System:输出系统组件的log

3)Event:输出event模块的log

4)Main:所有java层的log,遗迹不属于上面3层的log

缓冲区主要给系统组件使用,一般的应用不需要关心,应用的log都输出到main缓冲区中

默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log

 

3)-s

举例:adb logcat -s ActivityManager     \\只显示“ActivityManager”标签的日志

 

4)-f

举例:adb logcat -f /data/local/tmp/log.txt &   \\这里的“&”符号表示后台执行,即执行后断开pc和手机,可持续手机log

该选项指定输出日志信息的<filename> ,默认是stdout . 即文件是指android系统上的文件,非PC端文件;

5)“>”输出

 ">" 后面跟着要输出的日志文件, 可以将 logcat 日志输出到文件中;, 使用more log 命令查看日志信息;

举例:adb logcat>D:\android-sdk\log\log.txt    \\其中 D:\android-sdk\log\log.txt 为pc端log日志地址


 

6)优先级

 

优先级使用字符标识,以下优先级从低到高;

 

如果过滤v,则所有的日志都会显示,如果过滤E,则只会显示E及E以上级别的日志;

 

V –Verbose(最低优先级)

 

D – Debug

 

I – Info

 

W – Warning

 

E – Error

 

F – Fatal

 

S – Silent (highest priority, on which nothing is ever printed)

 

3、实例

实例1:adb logcat ActivityManager:I My App:D *:S

 

//过滤TAG为ActivityManager输出级别大于等于I的日志与TAG为MyApp输出级别大于D的日志

 上面表达式的最后的元素 *:S ,,是设置所有的标 签为”silent”,所有日志只显示有”View” and “MyApp”的,用 *:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中.

 

实例2:adb logcat  *:W     //显示优先级为warning或更高的日志信息


实例3:adb shell "logcat | grep com.rexen.zxapplication" >D:\android-sdk\log\log.txt      

 //只输出程序包名为“com.rexen.zxapplication”的日志


实例4:

 

adb logcat -d //将缓冲区的log打印到屏幕并退出

 

adb logcat -c //清除缓冲区log(testCase运行前可以先清除一下)

 

adb logcat -g //打印缓冲区大小并退出

 

adb logcat -f /data/local/tmp/log.txt -n 10 -r 1  //输出log

 

一般长时间输出log的话建议-f,-n,-r三个参数连用,这样当一个文件日志输出满了之后可以马上在另一个中进行输出。(未试验成功)

四、其他(目前还不理解)

如果你电脑上运行logcat ,相比在远程adbshell端,你还可以 为环境变量ANDROID_LOG_TAGS :输入一个参数来设置默认的过滤

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D*:S"

需要注意的是ANDROID_LOG_TAGS 过滤器如果 通过远程shell运行logcat 或 用adb shell logcat 来 运行模拟器/设备不能输出日志.


 

查看 stdout 和stderr

 

在默认状态下,Android系统有stdout 和 stderr (System.outSystem.err ) 输出到/dev/null , 在运行Dalvik VM的进程中,有一个系统可以备份日志文件。在这种情况下,系统会用stdout 和stderr 和 优先级 I.来记录日志信息

 

通过这种方法指定输出的路径,停止运行的模拟器/设备,然后通过用setprop 命 令远程输入日志

 

$ adb shell stop $ adb shell setprop log.redirect-stdio true $ adb shell start

 

系统直到你关闭模拟器/设备前设置会一直保留,可以通过添加/data/local.prop 可 以使用模拟器/设备上的默认设置


未完待续:管道grep比较重要,还未研究。。。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
adb logcat是一种Android开发工具,用于捕获和查看Android设备上的系统日志信息。下面将以300字的内容回答adb logcat教程。 adb logcat是通过Android调试桥(Android Debug Bridge,简称ADB)与Android设备进行通信的命令工具,它能够在开发阶段帮助开发者分析调试应用程序。首先,确保已安装adb工具并在命令行中可以正常运行。将Android设备连接到电脑上,并开启设备的USB调试模式。 接下来,在命令行中输入adb devices命令,可以列出已连接的设备列表。确认设备已被识别之后,输入adb logcat命令,就可以开始捕获设备的系统日志信息。 adb logcat命令有多个选项,可以根据需要进行使用。常用的一些选项包括: - -d:将当前日志消息输出到命令行,并停止日志输出。 - -v:指定日志消息的格式。例如,使用-v brief可以显示简洁的日志信息,-v thread会显示线程和优先级等信息。 - -s:按照指定的标签过滤日志输出。可以输入一个或多个标签,用空格分隔。 - -c:清除设备上的日志缓存。 - -f:将日志输出保存到指定文件中。 除了基本的命令选项外,adb logcat还可以按照不同的标签和优先级过滤日志信息,以便更好地定位和排除问题。对于开发过程中的调试和分析,还可以配合使用其他命令选项和工具来进行更深入的操作。 总的来说,adb logcat是一种简便而强大的工具,可以帮助开发者捕获和分析Android设备上的系统日志信息,从而更好地进行应用程序的调试和优化。通过学习和掌握adb logcat使用方法,开发者可以更高效地进行Android应用程序开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值