一、android log系统
1.1 logcat介绍
logcat
是
android
中的⼀个命令⾏⼯具,可以⽤于得到程序的
log
信息
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}
1.2.logcat命令格式
语法格式:
[adb] logcat [] … [
] …
PC
端使⽤:
adb logcat
shell
模式下使⽤:
logcat
二、logcat缓冲区
2.1 缓冲区介绍
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
2.2 缓冲区模型
三、logcat命令参数
参数 | 描述 |
-b |
加载⼀个可使⽤的⽇志缓冲区供查看,⽐如
event
和
radio
。默认值是
main
|
-c |
清除缓冲区中的全部⽇志并退出(清除完后可以使
⽤
-g
查看缓冲区)
|
-d |
将缓冲区的
log
转存到屏幕中然后退出
|
-f |
将
log
输出到指定的⽂件中
<
⽂件名
>.
默认为标准输
出(
stdout
)
|
-g |
打印⽇志缓冲区的⼤⼩并退出
|
-n |
设置⽇志的最⼤数⽬,默认值是
4
,需要和
-r
选项
⼀起使⽤
|
-r |
每时输出⽇志,默认值是
16
,需要和
-f
选项⼀起使
⽤
|
-s |
设置过滤器
|
-v |
设置输出格式的⽇志消息。默认是短暂的格式。⽀
持的格式列表
|
⼀般⻓时间输出
log
的话建议
-f
,
-n
,
-r
三个参数连⽤,这样当⼀个⽂件⽇志输出满了之后可以⻢上在另⼀个中进⾏输出
3.1 实例
//
将缓冲区的
log
打印到屏幕并退出
adb logcat -d
//
清除缓冲区
log
(
testCase
运⾏前可以先清除⼀下)
adb logcat -c
//
打印缓冲区⼤⼩并退出
adb logcat -g
//
输出
log
adb logcat -f /data/local/tmp/log.txt -n 10 -r 1
四、logcat格式化输出
4.1 参数说明
⽇志消息包含⼀个元数据字段,除了标签和优先级,您可以修改输出显示⼀个特定的元数据字段格式的消息。为此,您使⽤-v
选项来指定⼀个⽀持的输出格式。⼀下为⽀持的格式:
格式 | 说明 |
brief
|
显示优先级
/
标记和过程的
PID
发出的消息(默认格
式)
|
process
|
只显示
PID
|
tag
|
只显示优先级
/
标记
|
raw
|
显示原始的⽇志消息,没有其他元数据字段
|
time
|
调⽤显示⽇期、时间、优先级
/
标签和过程的
PID
发
出消息
|
threadtime
|
调⽤显示⽇期、时间、优先级、标签遗迹
PID TID
线程发出的消息
|
long
|
显示所有元数据字段与空⽩⾏和单独的消息
|
当
logcat
开始,指定想要输出格式
-v
选项:
[adb] logcat [-v ]
adb logcat –v thread
只能指定⼀个输出格式
-v
4.2 例⼦
五、logcat优先级
5.1 优先级语法
优先级使⽤字符标识,⼀下优先级从低到⾼
V –Verbose(
最低优先级
)
D – Debug
I – Info
W – Warning
E – Error
F – Fatal
S – Silent
为了减少不想要⽇志的输出,可以建⽴⼀个过滤器
过滤语法:
tag
:
priority
//
过滤
TAG
为
ActivityManager
输出级别⼤于
I
的⽇志与
TAG
为
MyApp
输出级别⼤于
D
的⽇志
adb logcat ActivityManager:I My App:D *:S
adb logcat *:W
设置过滤级别为
W
以上
如果⽤的⽐较多可以设置环境变量:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D*:S"