Android程序调试–LogCat按照日志信息级别进行输出和过滤

移动开发 Android
无论什么样的程序开发过程中,出现错误都是不可避免的,一般情况下,语法错误会被开发环境检测到,并能及时的提示我们错误的位置以及修改的方法,但是逻辑错误就不是那么容易被发现了,通常逻辑错误的定位和分析是一件非常困难的事情。

Android程序调试–LogCat

无论什么样的程序开发过程中,出现错误都是不可避免的,一般情况下,语法错误会被开发环境检测到,并能及时的提示我们错误的位置以及修改的方法,但是逻辑错误就不是那么容易被发现了,通常逻辑错误的定位和分析是一件非常困难的事情。

所以在学习Android过程中,继学习它的程序结构,写了HelloWorld和一些简单的界面布局程序之后,我选择研究一下它的调试工具。 LogCat就是其中一个。LogCat是用来获取系统日志信息的工具,它可以捕获的信息包括Dalvik虚拟机产生的信息,进程信 息,ActivityManager信息,PackagerManager信息,Android运行时信息和应用程序信息等等。

我们可以在打开Eclipse之后,选择Window –> Show View ->Other菜单,然后在Android->LogCat中选择LogCat,这样LogCat便会在Eclipse的下方区域出现了。

其中,在LogCat的右上方的5个字母分别表示了5种不同类型的日志信息(并以不同颜色加以区分,级别越高,颜色越突出):

1. [V]:详细(Verbose)信息,输出颜色为黑色

2. [D]:调试(Debug)信息,输出颜色是蓝色

3. [I]:通告(Info)信息,输出颜色为绿色

4. [W]:警告(Warn)信息,输出颜色为橙色

5. [E]:错误(Error)信息,输出颜色为红色,这里错误信息的级别***,其次是警告信息,然后是通知信息和调试信息,级别***的是详细信息。

6.[assert],新版本加入的。

在LogCat中,我们可以通告这5个字母图标选择要显示的信息类型,级别高于所选类型的信息也会在LogCat中显示,但级别低于所选类型的信息则不会被显示。

在Android程序调试过程中,首先要引入android.util.Log包,然后使用用来记录详细信息的Log.v()、用来记录调试信息的 Log.d()、用来记录通告信息的Log.i()、用来记录警告信息的Log.w()、用来记录错误信息的Log.e()这样五个函数在程序中设置“日 志点”。这些函数的***个参数是日志标签TAG(就是在你要测试的位置需要一个常量用来标记,标记的名字就是所谓的日志标签),第二个参数是实际的信息内 容。每当程序运行到我们设置的“日志点”时,应用程序的日志信息便被发送到LogCat中,我们就可以根据“日志点”显示的信息与预期我们在函数中设置的 信息内容是否一致来判断程序是否存在错误,这样就能根据“日志点”来迅速找到错误的“出事地点”了。

在下面的程序中,演示了Log类的具体使用方法:

  1.  package wt.relativeLayout; 
  2.  
  3.   
  4.  
  5. import android.app.Activity; 
  6.  
  7. import android.os.Bundle; 
  8.  
  9. import android.util.Log; 
  10.  
  11. import android.widget.Button; 
  12.  
  13. import android.widget.EditText; 
  14.  
  15. import android.widget.TextView; 
  16.  
  17. import android.util.Log; 
  18.  
  19.   
  20.  
  21. public class RelativeLayout extends Activity { 
  22.  
  23. final static String TAG = "LOGCAT"
  24.  
  25. private TextView tv = null
  26.  
  27. private EditText et = null
  28.  
  29. private Button btn1 = null
  30.  
  31. private Button btn2 = null
  32.  
  33.     @Override 
  34.  
  35.     public void onCreate(Bundle savedInstanceState) { 
  36.  
  37.         super.onCreate(savedInstanceState); 
  38.  
  39.         setContentView(R.layout.main); 
  40.  
  41.         tv = (TextView)findViewById(R.id.label); 
  42.  
  43.         et = (EditText)findViewById(R.id.entry); 
  44.  
  45.         btn1 = (Button)findViewById(R.id.cancel); 
  46.  
  47.         btn2 = (Button)findViewById(R.id.ok); 
  48.  
  49.         tv.setText(R.string.name); 
  50.  
  51.         btn1.setText(R.string.button1); 
  52.  
  53.         btn2.setText(R.string.button2); 
  54.  
  55.   
  56.  
  57.         Log.v(TAG, "This is Verbose"); 
  58.  
  59.         Log.d(TAG, "This is Debug"); 
  60.  
  61.         Log.i(TAG, "This is Info"); 
  62.  
  63.         Log.w(TAG, "This is Warn"); 
  64.  
  65.         Log.e(TAG, "This is Error"); 
  66.  
  67.     } 
  68.  
  69. }  
程序运行后,LogCat捕获得到应用程序发送的日志信息,显示结果如下图:

通过结果我们发现,即使我们事先选择了某个特定的日志信息的级别,产生的日志信息还是有很多,需要我们逐条去阅读,给我们带来很大的麻烦。这时我们就要用 到一个LogCat提供的“过滤”功能了,在右上角的“+”号和“-”号,分别是添加和删除过滤器。我们可以根据日志信息的标签(Tag)、产生日志的进 程编号(Pid)或者信息等级(Level),对显示的日志内容进行过滤。在实际使用中,我们***为每一个类声明一个字符串常量TAG,这样在 Logcat中我们可以容易区分不同的类的日志了。

下面使用在LogCat右上角的“+”号,添加一个名为LogcatFilter的过滤器,并设置过滤条件为“标签=LOGCAT”,下图为过滤器的具体设置方法:

过滤器设置好后,LogcatFilter过滤后的日志信息如下图,这样,无论什么类型的日志信息,属于哪个进程,只要标签为LOGCAT,都将显示在LogcatFilter内。

运行测试后,对logCat中的log通过配置l过滤器进行过滤

http://s8.51cto.com/wyfs02/M02/40/05/wKioL1PN9i-TUJjqAAAiq1cfXf8076.jpg

本文链接:http://my.oschina.net/liuher/blog/293594

责任编辑:chenqingxiang 来源: oschina
相关推荐

2010-01-26 14:59:29

Android调试程序

2021-06-01 21:23:43

嵌入式开发日志

2010-01-28 11:26:39

Android log

2013-05-20 15:04:02

Android调试查看日志Android开发

2011-08-22 09:59:16

2016-12-02 21:09:24

Android Stusmalideasmail

2011-06-01 15:49:00

Android 测试

2009-05-30 09:29:52

AndroidGoogle移动OS

2010-03-16 14:20:57

Java多线程调试

2023-10-25 09:26:23

Linux工具

2011-06-22 10:48:35

PHP

2011-07-18 17:39:31

ORACLE操作系统

2013-02-20 16:14:39

Android开发内存泄露

2010-03-01 11:06:52

Python 调试器

2010-02-05 18:04:36

Android程序框架

2010-02-07 10:21:27

Android应用程序

2024-02-27 22:31:58

Golang日志优化

2012-12-28 10:01:31

Android浏览器广告过滤

2021-06-15 20:59:14

Kubernetes调试容器

2015-12-11 13:39:56

GoiOSAndroid
点赞
收藏

51CTO技术栈公众号