前言
Android中的日誌工具類是Log(android.util.Log),這個類中提供瞭如下5個方法來供我們打印日誌
Log.v() :用於打印些最爲瑣碎的,意義最小的日誌信息。對應級別verbose,是Android日誌裏面級別最低的一種
Log.d() :用於打印一些調試信息,這些信息對你調試程序和分析問題應該是有幫助的,對應級別debug,比verbose高一級
Log.i() : 用於打印一些較爲重要的數據,這些數據應該是你非常想看到的,可以幫你分析用戶行爲數據。對應級別info,比debug高一級
Log.w() : 用於打印一些警告信息,提示程序在這個地方可能會有潛在的風險,最好去修復一下這些出現警告的地方。對應級別warn,比info高一級
Log.e(): 用於打印程序中的錯誤信息,比如程序進入catch語句當中。當有錯誤信息打印出來的時候,一般都代表你的程序出現嚴重的問題,必須儘快修復。對應級別error,比warn高一級。
其實很簡單,一共就5個方法,當然每個方法還會有不同的重載,但對你來說不是什麼難理解的地方了。
我們現在在HelloWorld項目中試一下系統自帶的日誌工具好不好用吧
打開HelloWorldActivity,在onCreate()方法中添加一行打印日誌的語句,如下所示
protected void onCreate(Bundle savedInstanceState){
super.oncreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
Log.d("MainActivity","開始執行");
}
Log.d()方法傳入了兩個參數:第一個參數是tag,一般傳入當前的類名就好,主要用於打印信息進行過濾;第二個參數是msg,即想要打印的具體內容。
現在可以用Shifit+F10運行HelloWorld這個項目了,或點擊頂部工具類的運行按鈕,在logcat中我們看到打印信息,如下所示:
10-08 07:30:24.423 1457-2245/com.lijizhi.myapplication D/MainActivity: 開始執行
從中你不僅可以看到打印日誌的內容和Tag名,就連程序的包名,打印時間以及應用程序的進程號都可以看到。
那麼我們爲什麼還要自定義Log並對其封裝呢?
首先 log是有助於我們調式bug,或者看一些重要的信息,特別是在開發的過程中,難免會產生很多很多的log,但如果開發完了需要發正式的release版本,如果不撤銷這些log日誌,會多多少少影響着性能,還有就是也會被其他開發人員開到一些敏感的信息。android提供的Log這個類,功能太少了,如果不自己再封裝下,很難達到自己的要求,比如你想在debug版本時可以隨時看到日誌,並且也可以給測試的同事看到,還有個場合就是正式發佈的時候屏蔽所有的日誌,還有些場景就是希望能看到更具體的這個log信息具體在哪個類中哪個方法中並且還可以看到具體在哪一行,它所在的線程是什麼,那麼Logger就可以做到。
具體操作步驟
首先建立util包,並在util包內新建一個名爲L的Java Class,具體代碼如下所示:
package com.lijizhi.myapplication.util;
import android.util.Log;
/* 項目名 MyApplication
* 包名 com.lijizhi.myapplication.util
* 文件名: L
* 創建者 : LJZ
* 創建時間:2017/10/8 0008 上午 7:41
* 描述 Log的封裝
*/
public class L {
//開關
public static final boolean DEBUG = true;
//TAG
public static final String TAG = "myapplication";
//五個等級 DIWE
public static void d(String text){
if(DEBUG){
Log.d(TAG,text);
}
}
public static void i(String text){
if(DEBUG){
Log.i(TAG,text);
}
}
public static void w(String text){
if(DEBUG){
Log.w(TAG,text);
}
}
public static void e(String text){
if(DEBUG){
Log.e(TAG,text);
}
}
}
那麼怎麼使用這個封裝的Log類,其實很簡單,比如我們要打印一條debug級別的日誌,只要相應的位置添加下面這一行就好了
L.d("開始執行");
這時再觀察logcat的打印信息如下所示:
10-08 07:52:44.517 2437-2437/com.lijizhi.myapplication D/MainActivity: 開始執行