标签:
这篇的大部分内容是学习至<极客学院>的相关课程而来,因为学习后的实际使用过程中发现部分知识并没有讲解详细,所以决定结合自身实践,添补并总结一些相关内容.
好嘞~上菜!
logcat是Android中的一个命令行工具,可以用于得到程序的log信息,获取的主要是java层和c++层。

语法格式:
adb shell logcat [<参数>]...[<优先级过滤>]
PC端执行:
>>> adb shell logcat [<参数>]...[<优先级过滤>]
shell执行:
>>> adb shell
>>> logcat [<参数>]...[<优先级过滤>]
停止输出:
ctrl+c
Android的Log输出量巨大,特别是通信系统的Log,因此Android把Log输出到不同的缓冲区中。
目前定义了4个Log缓冲区:
Radio:输出通信系统的Log
System:输出系统组件的Log
Event:输出事件模块的log
Main:所有java层的log,以及不属于上面3层的log
缓冲区主要给系统组件使用,一般的应用无需关心,应用LOG都输出到main缓冲区中。
| 命令 | 效果 | 
| -b<缓冲区> radio:输出通信系统的Log system:输出系统组件的Log event:输出event模块的log main:所有java层的log,以及不属于上面3层的log 
 | 加载查看指定的日志缓冲区信息,默认main和system | 
| -c | 清除缓冲区中的全部日志并退出 | 
| -d | 将缓冲区的log转存到屏幕中,然后退出 | 
| -f<文件名> | 将log输出到指定的文件中。 | 
| -g | 打印日志缓冲区的大小并退出 | 
| -n<数量> | 设置输出日志的文件数的最大数目,默认值是4,需要和-r一起使用。 | 
| -r<字节> | 每XX字节输出一个日志,默认值为16,需要个-f一起使用。 | 
| -s <设备号> | 过滤器 | 
| -v<格式> | 设置输出格式的日志消息。默认是短暂的格式。支持的格式列表见格式化输出。 | 
命令格式:
>>> adb shell logcat -n 200 -r 50 -f /mnt/sdcard/log/logcat.log
解读:
输出.log到-f的地址,每个文件50KB,写200个.
注意:
1.-f只能指定手机内的路径
2.使用>指定PC路径也可以存储,但是这样所有log会写入一个文件中,如果你操作时间较长可以想象一下,打开一个几十M的log那画面太美了~
log信息==’元数据字段’:’log内容’
可以修改输出显示一个特定的元数据字段格式的消息,为此使用-v选项来指定一个支持的输出格式,一下为支持的格式。
| drief | 显示优先级/标记和过程的PID发出的消息(默认格式) | 
| process | 只显示PID | 
| tag | 只显示优先级/标记 | 
| raw | 显示原始的日志消息,没有其它元数据字段 | 
| time | 调用显示日期、时间、优先级/标签和过程的PID发出消息 | 
| threadtime | 调用显示日期、时间、优先级、标签以及PID TID线程发出的消息 | 
| long | 显示所有元数据字段与空白行和单独的消息 | 
命令格式:
>>> adb shell logcat -v tag
解读:
用tag模式输出log信息
还可以指定多种模式组合输出
命令格式:
>>> adb shell logcat -v tag -v time
优先级从低到高
| V(String,String)(verbose) | 显示全部信息 | 
| D(String,String)(debug) | 显示调试信息 | 
| I(String,String)(information) | 显示一般信息 | 
| W(String,String)(warning) | 显示警告信息 | 
| E(String,String)(error) | 显示错误信息 | 
| F(String,String)(fatal) | 显示严重错误 | 
| S(String,String)(silent) | 显示,无输出 | 
为了减少日志的输出,以及有效的过滤多余的信息,可以建立一个过滤器
过滤语法 : 元数据字段:优先级
例子:
>>> adb shell logcat ActivityManager:I Myapp:D *:S
解读:
显示’ActivityManager’大于I的日志,显示’Myapp’大于D的日志,其余日志不显示
ActivityManager:
是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等。直接翻译就是”Activity管理器”,建议过滤显示.
Myapp:
  代指你想过滤的’元数据字段’,这个东西开发人员可以设置
1.推荐与开发人员沟通,设置为包名,方便过滤
2.如果开发不给改,可以向开发人员询问’元数据字段’被设置为什么(官方推荐的是相关log类的类名)
3.如果开发还是不给帮助,可以使用过滤字符串:adb shell logcat | find “包名” ,来过滤与你包名有关的log
*:
指其它所有的log信息
菜齐了!!!
标签:
原文地址:http://www.cnblogs.com/dianxiao2/p/5610887.html