当前位置:   article > 正文

logcat的基本使用_logcat的用法

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比较重要,还未研究。。。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/318203
推荐阅读
相关标签
  

闽ICP备14008679号