Android程式調試–LogCat按照日誌資訊層級進行輸出和過濾

來源:互聯網
上載者:User

Android程式調試–LogCat按照日誌資訊層級進行輸出和過濾

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://my.oschina.net/liuher/blog/293594

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.