《Learning Android中文版》学习笔记06.6
6.6. Android的日志机制
Android拥有一套系统级的日志机制。在代码的任何位置,都可以调用Log.d(TAG, message)来记录日志。其中的TAG与message都是字符串。TAG是一个标志,通常按照应用的名称、类名、模块名取名字。好习惯是,在类中专门为它定义一个常量,比如:
private static final String TAG = "StatusActivity";
Tip:
在编译之前需要确保已经import了Log类。有关import,Eclipse有个快捷功能可用,那就是选择Source→Organize Imports或按下Ctrl+O,Eclipse即可自动组织代码中的import语句。但是对Log类来说有一点需要注意,那就是它的名字比较常见,也就比较容易产生冲突。这时就需要靠自己的直觉做选择,辨认出正确的import语句。比如在这里,选择Android Log类还是Apache Log类,是很明显的事情。
日志拥有多个级别:.d()表示调试,.e()表示错误、.w()表示警告(warning)、.i()表示信息(info)。有趣的是,还有个.wtf()表示“不该发生的错误”,它的字面意思是“What a Terrible Failure”。Eclipse会按照不同的颜色显示不同级别的日志。
(译者注:在英文社区中,"WTF"是很常见的调侃用语,原意指"What The Fuck"。.wtf()这个方法可以视为Android框架的一个小幽默)
**Warning:
Eclipse的Organize Imports工具有时可能会造成难以查找的错误。比如,有时你的工程还没有生成R.java文件,Organize Imports工具就自动插入了一句import android.R,这是因为Android框架中也有个R类与你的R类重名。因此若看到R资源文件相关的编译错误,不妨检查下是不是把android.R也给import了。**
6.6.1. LogCat
Android系统中的日志都是输出到LogCat。它是一套标准的系统日志机制,可在Java或者C/C++中使用。通过它,开发者可以阅读/过滤程序中输出的日志。在Android开发中,访问LogCat有两种方式:通过Eclipse,或者通过命令行。
6.6.2. 访问LogCat:通过Eclipse的DDMS
在Eclipse中访问LogCat,需要打开LogCat View,如图6.6. "Eclipse的LogCat",它一般在DDMS中。单击右上角的DDMS按钮
image.png
,或者选择菜单Window→Open Perspective→DDMS。
DDMS指Dalvik Debug Monitor Server,它可以将运行于设备上的应用程序与Eclipse这样的开发环境连接起来。
图 6.6. Eclipse的LogCat
Eclipse的LogCat
可以在LogCat中设置过滤规则。单击绿色加号按钮,调出LogCat Filter对话框,然后就可以根据TAG、日志等级或进程id设置过滤规则了(如 图6.7. "LogCat Filter")。过滤所得的结果显示在另一个窗口中。
图 6.7. LogCat Filter
image.png
Note:
如果你还没有使用过DDMS,那么Eclipse的右上角可能会没有它的按钮。出现这种情况的话,可以访问菜单Window→Open Perspective并选择DDMS。随后它的按钮就会显示出来了。
6.6.3. 访问LogCat:通过命令行
同前面的所有工具无异,Eclipse中可以做的,在命令行中也同样可以。访问LogCat,可以打开控制台,输入:
[user:~]> adb logcat
它可以显示出LogCat的最新输出,并在收到新日志时实时更新。你也可以过滤日志,只是它的语法可能没那么直观。比如想查看标记为StatusActivity的日志条目,就用StatusActivity:作为过滤,其中的表示接受所有级别的日志。当然也可以设置过滤将不希望见到的部分忽略,如*:S,表示不显示其它标志的日志。命令如下:
[user:~]> adb logcat StatusActivity:* *:S
Tip:
个人经验,在开发中一直运行着一个adb logcat的命令行窗口是很有用的。这样可以方便地跟踪程序的状态,而且比起切换到Eclipse的DDMS界面,这要快的多。
网友评论