雖然相信大部分的人對 Log 並不陌生,剛好發現了一點點使用上的小技巧,所以就順便統整了一下,整離成一篇短短的文章
在我們進行程式開發的時候一定很常會需要將變數或是結果輸出出來確認與我們想的是否相同,那今天在我們使用 Java 開發 Android 的過程中我們可以使用甚麼來做到這件事呢?
相信應該有一些人的第一直覺是使用 System.out.println();
吧,就像是在寫 C 的時候使用 printf();
一樣的概念,雖然就目的取向而言可以做到類似的功能,不過當我們今天程式規模越來越大的時候需要輸出觀察或是紀錄的事件越來越多時相信你就會發見這樣使用的痛苦了。
那回過頭來看 Log 又有甚麼優點呢?認真想起來某種意義上來說他其實是一種強化版的 print,為甚麼這樣說呢,這是因為當我們有個大型專案的時候一定會有許多的子程式或是不同的 Activity,這時候要是我們想要清楚的觀察特定部分的輸出,不使用 Log 就會有一點點小小麻煩,那今天我們又想要在這些輸出中根據重要程度來進行分類呢?是不是又再麻煩了一些,當然使用 print 也一定可以做到這些,只要自己在輸出的內容中加入一些特定字元進行搜尋還是有辦法的。
但是今天我們有更方便的工具"Log",我們為何又要去繞一大圈做這件事呢?
簡單說了一下為甚麼要使用 Log,接下來就開始來了解一下 Log 有哪些特色吧。
Log其實有幾個種類,下一個小節會進行介紹,不過在這邊我先提一下他們使用的方式,他們不像 print()
直接在小括號裡面放進要輸出的字串就好,Log 這個方法他需要傳入兩個參數,第一個為 tag,第二個為 msg,tag 主要的功用就是用來進行過濾,通常會使用當前所在的類名(class) ,msg 就是我們在這則訊行中打算顯示的訊息內容。
範例:
Log.d("HelloWorld", "onCreate execute");
Log.v()
:使用在輸出瑣碎、意義最小的日誌訊息。v 對應的級別為 verbose。Log.d()
:使用在輸出一些測試訊息,而這些訊息對我們測試程式與分析問題是有幫助的。d 對應的級別為 debug。Log.i()
:使用在輸出一些比較重要的日誌訊息,這些訊息應該會是我們想知道的,並且對於我們分析使用者行為有所幫助的訊息。i 對應的級別為 info。Log.w()
:使用在輸出一些警告訊息,提醒程式以及我們這些地方需要注意淺在風險。w 對應的級別為 warn。Log.e()
:使用在輸出錯誤訊息,一般使用於需要立即修改的嚴重問題。e 對應的級別為 error。在我們使用 Android Studio 的時候,我們可以藉由 Android Studio 提供的快捷鍵功能來加速我們使用他們。
比如你想打印一條debug等級的日誌,那麼只需要輸入 logd,然後按下 Tab鍵,就會幫你自動補全一條完整的 log.d 語句。其他同理,可以輸入 logi、logw、loge即可。
另外還有一個也蠻方便的快捷鍵,那就是我們只要在 class 中輸入 logt 然後一樣按下 Tab,他就會自動幫你以現在 class 名稱生成一個 TAG 常數供你在 log 中使用。