組件化思想之Log的封裝

前言

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: 開始執行

發佈了100 篇原創文章 · 獲贊 93 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章