一、   目标

1.   了解并熟悉如何使用Log

2.   通过Log分析ANR(Application noresponse)和Force Closed引起的程序问题

3.   知道系统Log文件的存放位置

4.   通过Log快速定位到Root Cause的位置

 

二、   具体内容

1.android.util.Log常用的方法有以下5个:

Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 

分别对应:

VERBOSEDEBUG,INFO, WARN,ERROR。

§  Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

§  Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

§  Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

§  Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

§   Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。

书写格式如下:

Log.v(LogDemo.ACTIVITY_TAG, "This is Verbose.");
    Log.d(LogDemo.ACTIVITY_TAG,"This is Debug.");
     Log.i(LogDemo.ACTIVITY_TAG,"This is Information");
     Log.w(LogDemo.ACTIVITY_TAG,"This is Warnning.");
     Log.e(LogDemo.ACTIVITY_TAG,"This is Error.");

2. Log文件

一般情况下,在以下三种情况下会产生Log文件保存在手机中(data/log文件夹下),虚拟机默认不产生:

§   程序异常退出 uncaused exception

§   程序强制关闭 Force Closed(FC)

§   程序无响应   Application no response(ANR)

什么时候会产生ANR呢?

§   界面操作(按钮的点击)等待时间超过5秒

§   HandleMessenge 回调函数中执行超过10秒

 

 

三、   问题解答

1.  如何在程序中打出Log以及log的分类区别?

2.  给你一个Log文件,如何定位到问题的所在?

四、   练习

五、   总结

1.首先,一个Android的程序在开发阶段需要进行故障排查,同样的,开发后也需要进行健壮性测试,这个过程中都少不了Log的应用,所以不妨在写程序的时候在一些关键点写一些Log,方便后面观察程序运行状态。

Plus:程序后续的测试可以使用Android自带的monkey命令进行压力测试。在cmd中进入模拟器Linux环境里面(adb shell),找到软件的路径,然后运行monkey –p com.test.myApp –v 1500(自动测试com.test.myApp这个包1500次),然后通过Log找到问题。