6.下Android中日誌工具的使用方法

    Android中的日誌工具類是Log(android.util.Log),這個類中提供瞭如下5個方法來供我們打印日誌。

1.Log.v()  用於打印那些最爲瑣碎的、意義最小的日誌信息。對應級別verbose,是 Android日誌裏面級別最低的一種。

2.Log.d()  用於打印一些調試信息,這些信息對你調試程序和分析問題應該是有幫助的。 對應級別debug,比verbose高一級。

3.Log.i()   用於打印一些比較重要的數據,這些數據應該是你非常想看到的、可以幫你分 析用戶行爲數據。對應級別info,比debug高一級。

4.Log.w()  用於打印一些警告信息,提示程序在這個地方可能會有潛在的風險,最好去修 復一下這些出現警告的地方。對應級別warn,比info高一級。

5.Log.e()  用於打印程序中的錯誤信息,比如程序進入到了catch語句當中。當有錯誤信息 打印出來的時候,一般都代表你的程序出現嚴重問題了,必須儘快修復。對應級別error, 比warn高一級

其實很簡單,一共就5個方法,當然每個方法還會有不同的重載,但那對你來說肯定不是什麼難 理解的地方了。我們現在就在HelloWorld項目中試一試日誌工具好不好用吧

      Log.d()傳入兩個參數,第一個是tag,一般傳入當前的類名就好,主要用於對打印信息進行過濾;第二個參數是msg,即想要打印的具體內容。如下圖所示:

 其中,你不僅可以看到一些常規的tag和msg信息,就連程序的包名,打印時間及應用程序的進程號都可以看到。我們可以在上方的搜索欄中針對日誌中含有的關鍵字進行過濾。

     爲什麼使用Log而不使用System.out呢?我相信很多的Java新手都非常喜歡使用System.out.println()    方法來打印日誌,不知道你 是不是也喜歡這麼做。不過在真正的項目開發中,是極度不建議使 用System.out.println()    方法的!如果你在公司的項目中經常使用這個方法,就很有可能 要捱罵了。 爲什麼System.out.println()    方法會這麼遭大家唾棄呢?經過我仔細分析之後,發現這個 方法除了使用方便一點之外,其他就一無是處了。方便在哪兒呢?在Eclipse中你只需要輸入 syso,然後按下代碼提示鍵,這個方法就會自動出來了,相信這也是很多Java新手對它鍾情的原 因。那缺點又在哪兒了呢?這個就太多了,比如日誌打印不可控制、打印時間無法確定、不能 添加過濾器、日誌沒有級別區分…… 聽我說了這些,你可能已經不太想用System.out.println()    方法了,那麼Log就把上面所 說的缺點全部都改好了嗎?雖然談不上全部,但我覺得Log已經做得相當不錯了。我現在就來帶 你看看Log和logcat配合的強大之處。 

     先看看快捷鍵輸入的方式,如果你想打印一個Log.d(),你只需要輸入logd,就會自動補全,以此類推,輸入logw,loge等,都會自動補全如下圖:

我們看到tag在這裏是一個常量,防止我們每次都要重新寫一遍tag,那麼這個常量在哪呢? 這個也有一個快捷鍵可以自動生成,在onCreate方法外輸入logt,就會自動補全這個常量,如下圖所示:

 除了快捷輸入外,logcat中還可以輕鬆的添加過濾器,如下圖所示:

目前只有3個過濾器,其中的show only selected application表示只顯示當前選中程序的日誌,Firebase是谷歌提供的的一個分析工具,我們可以不用管他,No Filters表示沒有過濾器,會把所有的日誌都打印出來。

Edit Filter Configuration表示可以自定義一個過濾器,我們點擊它,會彈出一個過濾器配置界面,我們給過濾器起名爲data,並且讓他 對名爲data的tag進行過濾,如下圖所示:

點擊ok,我們可以看到過濾器類型中多了一個data類型的過濾器,如下圖所示:

      當你點擊這個過濾器的時候,你會發現剛 纔在onCreate()    方法裏打印的日誌沒了,這是因爲data這個過濾器只會顯示tag名稱爲data的 日誌。你可以嘗試在onCreate()    方法中把打印日誌的語句改成Log.d("data","onCreate    execute")    ,然後再次運行程序,你就會在data過濾器下看到這行日誌了 。

     看完了過濾器,再來看一下logcat中的日誌級別控制吧。logcat中主要有5個級別,分別對應着上 一節介紹的5個方法,如下圖所示:

        當前我們選中的級別是verbose,也就是最低等級。這意味着不管我們使用哪一個方法打印日 志,這條日誌都一定會顯示出來。而如果我們將級別選中爲debug,這時只有我們使用debug及 以上級別方法打印的日誌纔會顯示出來,以此類推。你可以做一下試驗,當你把logcat中的級別 選中爲info、warn或者error時,我們在onCreate() 方法中打印的語句是不會顯示的,因爲我 們打印日誌時使用的是Log.d()    方法。日誌級別控制的好處就是,你可以很快地找到你所關心的那些日誌。相信如果讓你從上千行日 志中查找一條崩潰信息,你一定會抓狂的吧。而現在你只需要將日誌級別選中爲error,那些不 相干的瑣碎信息就不會再幹擾你的視線了。
      最後我們再來看一下關鍵字過濾。如果使用過濾器加日誌級別控制還是不能鎖定到你想查看的 日誌內容的話,那麼還可以通過關鍵字進行進一步的過濾。我們可以在輸入框裏輸入關鍵字的內容,這樣只有符合關鍵字條件的日誌纔會顯示出來,從而 能夠快速定位到任何你想查看的日誌。另外還有一點需要注意,關鍵字過濾是支持正則表達式 的,有了這個特性,我們就可以構建出更加豐富的過濾條件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章