1. 程式人生 > 實用技巧 >Android程式除錯–LogCat按照日誌資訊級別進行輸出和過濾

Android程式除錯–LogCat按照日誌資訊級別進行輸出和過濾

>>> hot3.png

Android程式除錯–LogCat

無論什麼樣的程式開發過程中,出現錯誤都是不可避免的,一般情況下,語法錯誤會被開發環境檢測到,並能及時的提示我們錯誤的位置以及修改的方法,但是邏輯錯誤就不是那麼容易被發現了,通常邏輯錯誤的定位和分析是一件非常困難的事情。

所以在學習Android過程中,繼學習它的程式結構,寫了HelloWorld和一些簡單的介面佈局程式之後,我選擇研究一下它的除錯工具。LogCat就是其中一個。LogCat是用來獲取系統日誌資訊的工具,它可以捕獲的資訊包括Dalvik虛擬機器產生的資訊,程序資訊,ActivityManager資訊,PackagerManager資訊,Android執行時資訊和應用程式資訊等等。

我們可以在開啟Eclipse之後,選擇Window–>ShowView->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類的具體使用方法:

packagewt.relativeLayout;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.TextView;

importandroid.util.Log;

publicclassRelativeLayoutextendsActivity{

finalstaticStringTAG="LOGCAT";

privateTextViewtv=null;

privateEditTextet=null;

privateButtonbtn1=null;

privateButtonbtn2=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tv=(TextView)findViewById(R.id.label);

et=(EditText)findViewById(R.id.entry);

btn1=(Button)findViewById(R.id.cancel);

btn2=(Button)findViewById(R.id.ok);

tv.setText(R.string.name);

btn1.setText(R.string.button1);

btn2.setText(R.string.button2);

Log.v(TAG,"ThisisVerbose");

Log.d(TAG,"ThisisDebug");

Log.i(TAG,"ThisisInfo");

Log.w(TAG,"ThisisWarn");

Log.e(TAG,"ThisisError");

}

}

程式執行後,LogCat捕獲得到應用程式傳送的日誌資訊,顯示結果如下圖:


通過結果我們發現,即使我們事先選擇了某個特定的日誌資訊的級別,產生的日誌資訊還是有很多,需要我們逐條去閱讀,給我們帶來很大的麻煩。這時我們就要用到一個LogCat提供的“過濾”功能了,在右上角的“+”號和“-”號,分別是新增和刪除過濾器。我們可以根據日誌資訊的標籤(Tag)、產生日誌的程序編號(Pid)或者資訊等級(Level),對顯示的日誌內容進行過濾。在實際使用中,我們最好為每一個類宣告一個字串常量TAG,這樣在Logcat中我們可以容易區分不同的類的日誌了。

下面使用在LogCat右上角的“+”號,新增一個名為LogcatFilter的過濾器,並設定過濾條件為“標籤=LOGCAT”,下圖為過濾器的具體設定方法:


過濾器設定好後,LogcatFilter過濾後的日誌資訊如下圖,這樣,無論什麼型別的日誌資訊,屬於哪個程序,只要標籤為LOGCAT,都將顯示在LogcatFilter內。


執行測試後,對logCat中的log通過配置l過濾器進行過濾

21210342_WwyO.jpg

21210342_IeRV.jpg

21210342_8vuL.jpg

這樣,除錯工作就完成了。

轉載於:https://my.oschina.net/liuher/blog/293594