一、android log系统

1.1 logcat介绍

logcatandroid中的⼀个命令⾏⼯具,可以⽤于得到程序的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,因此,androidlog输出到不同的缓冲区中,⽬前定义了
四个log缓冲区:
1Radio:输出通信系统的log
2System:输出系统组件的log
3Event:输出event模块的log
4Main:所有java层的log,遗迹不属于上⾯3层的log
缓冲区主要给系统组件使⽤,⼀般的应⽤不需要关⼼,应⽤的log都输出到main缓冲区中
默认log输出(不指定缓冲区的情况下)是输出SystemMain缓冲区的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
//清除缓冲区logtestCase运⾏前可以先清除⼀下)
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
为了减少不想要⽇志的输出,可以建⽴⼀个过滤器
过滤语法:tagpriority
//过滤TAGActivityManager输出级别⼤于I的⽇志与TAGMyApp输出级别⼤于D的⽇志
adb logcat ActivityManager:I My App:D *:S
adb logcat *:W
设置过滤级别为W以上
如果⽤的⽐较多可以设置环境变量:export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D*:S"
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐