Android——调试之 Log和LogCat的详解

在这里插入图片描述


QQ 1274510382
Wechat JNZ_aming
商业互捧 QQ群538250800
技术搞事 QQ群599020441
技术合作 QQ群152889761
加入我们 QQ群649347320
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。


为什么使用Log而不使用System.out

System.out.println()方法来打印日志
这个方法除了使用方便一点之外,其他就一无是处了。

在Eclipse中你只需要输入syso,
然后按下代码提示键,这个方法就会自动出来了

日志打印不可控制、
打印时间无法确定、
不能添加过滤器、
日志没有级别区分……


在LogCat中是可以很轻松地添加过滤器
有两个过滤器
All messages过滤器也就相当于没有过滤器,会把所有的日志都显示出来
com.test.helloworld过滤器是我们运行HelloWorld项目时自动创建的
点击这个过滤器就可以只看到HelloWorld程序中打印的日志

自定义过滤器

onCreate()方法里打印的日志没了,
因为data这个过滤器只会显示Tag名称为data的日志。

你可以尝试在onCreate()方法中把打印日志的语句改成
Log.d(“data”, “onCreate execute”),
然后再次运行程序,你就会在data过滤器下看到这行日志了。

LogCat中的5个级别日志级别控制

调试信息分为五类:

VERBOSE 类型调试信息,verbose啰嗦的意思
DEBUG 类型调试信息, debug调试信息
INFO 类型调试信息, 一般提示性的消息information
WARN 类型调试信息,warning警告类型信息
ERROR 类型调试信息,错误信息

 Log.v(String tag, String msg); //VERBOSE 
Log.d(String tag, String msg); //DEBUG 
Log.i(String tag, String msg); //INFO 
Log.w(String tag, String msg); //WARN 
Log.e(String tag, String msg); //ERROR 
Tag为调试信息标签名称,msg为添加的调试信息 

Android Log调试信息的显示

Android Log添加的调试信息主要在logcat中显示,
在安装好Android开发环境的eclipse中DDMS模式和Debug模式下都有Logcat标签窗口,里面会显示所有的调试信息。

具体该调用哪个方法添加什么类型的调试信息?

可根据Logcat提供的过滤器来和信息类型
来决定使用Log的那个方法添加哪类调试信息。

Logcat调试信息显示窗口 右上方有5个图标,
代表 过滤器,可过滤输出相应的调试信息:

V:不过滤输出所有调试信息
包括 VERBOSE、DEBUG、INFO、WARN、ERROR

D:debug过滤器,输出DEBUG、INFO、WARN、ERROR调试信息
I:info过滤器,输出INFO、WARN、ERROR调试信息
W:waring过滤器,输出WARN和ERROR调试信息
E:error过滤器,只输出ERROR调试信息

adb查看Log日志

cmd命令行中使用adb logcat命令查看android系统和应用的log,
dos窗口按ctrl+c中断输出log记录。

logcat日志中的优先级/tag标记:

android输出的每一条日志都有一个标记和优先级与其关联。

优先级是下面的字符,顺序是从低到高:

V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent
  • 标记是一个简短的字符串,用于标识原始消息的来源。

– 如下是一个日志输出的消息,优先级是“D”,标记是“PowerManagerService”:

D/PowerManagerService( 305): onSensorChanged: light value: 306.0

–使用logcat命令查看android日志输出:

adb logcat     //显示全部日志
adb logcat > c:\test.log //将日志保存到文件test.log

–根据tag标记和级别过滤日志输出:

仅输出标记为“ActivityManager”且优先级大于等于“Info”和标记 为“PowerManagerService”并且优先级大于等于“Debug”的日志:

adb logcat ActivityManager:I PowerManagerService:D *:S

注:*:S用于设置所有标记的日志优先级为S,这样可以确保仅输出符合条件的日志。


adb logcat *:W   //显示所有优先级大于等于“warning”的日志

adb logcat -s PowerManagerService   //显示PowerManagerService的日志信息

Logcat命令列表:

-d 将日志显示在控制台后退出
-c 清理已存在的日志
-f <filename> 将日志输出到文件
adb logcat -f /sdcard/test.txt

-v <format>设置日志输入格式控制输出字段,默认的是brief格式
brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容
adb logcat -v thread   //使用 thread 输出格式
注意-v 选项中只能指定一种格式。

-b <buffer>加载一个可使用的日志缓冲区供查看,默认值是main。
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)

adb logcat -b radio     //查看radio缓冲区
发布了286 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33608000/article/details/105261175
今日推荐