《Learning Android中文版》學習筆記06.6
6.6. Android的日志機制
Android擁有一套系統(tǒng)級的日志機制。在代碼的任何位置,都可以調(diào)用Log.d(TAG, message)來記錄日志椅亚。其中的TAG與message都是字符串寺枉。TAG是一個標志,通常按照應用的名稱鞠抑、類名控淡、模塊名取名字嫌吠。好習慣是,在類中專門為它定義一個常量掺炭,比如:
private static final String TAG = "StatusActivity";
Tip:
在編譯之前需要確保已經(jīng)import了Log類辫诅。有關import,Eclipse有個快捷功能可用涧狮,那就是選擇Source→Organize Imports或按下Ctrl+O炕矮,Eclipse即可自動組織代碼中的import語句么夫。但是對Log類來說有一點需要注意,那就是它的名字比較常見肤视,也就比較容易產(chǎn)生沖突档痪。這時就需要靠自己的直覺做選擇,辨認出正確的import語句邢滑。比如在這里腐螟,選擇Android Log類還是Apache Log類,是很明顯的事情困后。
日志擁有多個級別:.d()表示調(diào)試乐纸,.e()表示錯誤、.w()表示警告(warning)摇予、.i()表示信息(info)汽绢。有趣的是,還有個.wtf()表示“不該發(fā)生的錯誤”趾盐,它的字面意思是“What a Terrible Failure”。Eclipse會按照不同的顏色顯示不同級別的日志小腊。
(譯者注:在英文社區(qū)中救鲤,"WTF"是很常見的調(diào)侃用語,原意指"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系統(tǒng)中的日志都是輸出到LogCat。它是一套標準的系統(tǒng)日志機制棱烂,可在Java或者C/C++中使用租漂。通過它,開發(fā)者可以閱讀/過濾程序中輸出的日志颊糜。在Android開發(fā)中哩治,訪問LogCat有兩種方式:通過Eclipse,或者通過命令行衬鱼。
6.6.2. 訪問LogCat:通過Eclipse的DDMS
在Eclipse中訪問LogCat业筏,需要打開LogCat View,如圖6.6. "Eclipse的LogCat"鸟赫,它一般在DDMS中蒜胖。單擊右上角的DDMS按鈕
消别,或者選擇菜單Window→Open Perspective→DDMS。
DDMS指Dalvik Debug Monitor Server翠勉,它可以將運行于設備上的應用程序與Eclipse這樣的開發(fā)環(huán)境連接起來妖啥。
圖 6.6. Eclipse的LogCat
可以在LogCat中設置過濾規(guī)則。單擊綠色加號按鈕对碌,調(diào)出LogCat Filter對話框荆虱,然后就可以根據(jù)TAG、日志等級或進程id設置過濾規(guī)則了(如 圖6.7. "LogCat Filter")朽们。過濾所得的結果顯示在另一個窗口中怀读。
圖 6.7. LogCat Filter
Note:
如果你還沒有使用過DDMS,那么Eclipse的右上角可能會沒有它的按鈕骑脱。出現(xiàn)這種情況的話菜枷,可以訪問菜單Window→Open Perspective并選擇DDMS。隨后它的按鈕就會顯示出來了叁丧。
6.6.3. 訪問LogCat:通過命令行
同前面的所有工具無異啤誊,Eclipse中可以做的,在命令行中也同樣可以拥娄。訪問LogCat蚊锹,可以打開控制臺,輸入:
[user:~]> adb logcat
它可以顯示出LogCat的最新輸出稚瘾,并在收到新日志時實時更新牡昆。你也可以過濾日志,只是它的語法可能沒那么直觀摊欠。比如想查看標記為StatusActivity的日志條目丢烘,就用StatusActivity:作為過濾,其中的表示接受所有級別的日志些椒。當然也可以設置過濾將不希望見到的部分忽略播瞳,如*:S,表示不顯示其它標志的日志免糕。命令如下:
[user:~]> adb logcat StatusActivity:* *:S
Tip:
個人經(jīng)驗狐史,在開發(fā)中一直運行著一個adb logcat的命令行窗口是很有用的。這樣可以方便地跟蹤程序的狀態(tài)说墨,而且比起切換到Eclipse的DDMS界面骏全,這要快的多。