Android Log日志封裝

一、簡(jiǎn)介

為什么要對(duì)日志進(jìn)行封裝?

先對(duì)比一下效果:
clipboard.png

打印結(jié)果:
clipboard.png
封裝前:快捷鍵輸入loge便可打印出Log.e(TAG, "onCreate: ", );需要輸入?yún)?shù)TAG和參數(shù)msg。 且我們可以在Logcat頁(yè)面查看日志信息。

缺點(diǎn):

(1)輸入的參數(shù)較多且重復(fù)

(2)當(dāng)打印的日志信息過(guò)多時(shí),不方便查找我們所需的信息

(3)無(wú)法快速指定是哪一行打印出來(lái)的信息

(4)應(yīng)用發(fā)布到市場(chǎng)上時(shí),需要手動(dòng)一個(gè)個(gè)刪除打印的日志

封裝后:只需輸入你想打印的msg,使用方便。且可以在Logcat頁(yè)點(diǎn)擊類名即可跳轉(zhuǎn)到相應(yīng)的位置。

二、Log具體封裝

import android.util.Log;

/**
 *
 * 日志封裝
 */

public class LogUtils {
    static String className;//類名
    static String methodName;//方法名
    static int lineNumber;//行數(shù)

    /**
     * 判斷是否可以調(diào)試
     * @return
     */
    public static boolean isDebuggable() {
        return BuildConfig.DEBUG;
    }

    private static String createLog(String log ) {
        StringBuffer buffer = new StringBuffer();
        buffer.append("================");
        buffer.append(methodName);
        buffer.append("(").append(className).append(":").append(lineNumber).append(")================:");
        buffer.append(log);
        return buffer.toString();
    }

    /**
     * 獲取文件名、方法名、所在行數(shù)
     * @param sElements
     */
    private static void getMethodNames(StackTraceElement[] sElements){
        className = sElements[1].getFileName();
        methodName = sElements[1].getMethodName();
        lineNumber = sElements[1].getLineNumber();
    }

    public static void e(String message){
        if (!isDebuggable())
            return;
        getMethodNames(new Throwable().getStackTrace());
        Log.e(className, createLog(message));
    }

    public static void i(String message){
        if (!isDebuggable())
            return;
        getMethodNames(new Throwable().getStackTrace());
        Log.i(className, createLog(message));
    }

    public static void d(String message){
        if (!isDebuggable())
            return;
        getMethodNames(new Throwable().getStackTrace());
        Log.d(className, createLog(message));
    }

    public static void v(String message){
        if (!isDebuggable())
            return;
        getMethodNames(new Throwable().getStackTrace());
        Log.v(className, createLog(message));
    }

    public static void w(String message){
        if (!isDebuggable())
            return;
        getMethodNames(new Throwable().getStackTrace());
        Log.w(className, createLog(message));
    }
}

三、關(guān)閉調(diào)試

當(dāng)我們要將應(yīng)用發(fā)布到市場(chǎng)時(shí),需要把日志清除掉(關(guān)閉調(diào)試)。

(1)第一種方式:打開(kāi)project Stucture
clipboard.png

(2)第二種方式:打開(kāi)build.gradle
clipboard.png
就不需要像以前一樣一行行刪除。當(dāng)要用的時(shí)候再打開(kāi)即可

四、源碼地址

https://github.com/DayorNight/BLCS

五、內(nèi)容推薦

CSDN地址:https://blog.csdn.net/cs_lwb/article/details/82823536
上一篇《Android 友盟多渠道打包》
參考文檔:https://blog.csdn.net/lmj623565791/article/details/52506545

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評(píng)論 25 709
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,014評(píng)論 2 59
  • 在此特此聲明:一下所有鏈接均來(lái)自互聯(lián)網(wǎng),在此記錄下我的查閱學(xué)習(xí)歷程,感謝各位原創(chuàng)作者的無(wú)私奉獻(xiàn) ! 技術(shù)一點(diǎn)一點(diǎn)積...
    遠(yuǎn)航的移動(dòng)開(kāi)發(fā)歷程閱讀 11,545評(píng)論 12 197
  • 兩條永不相交的平行線 在各自的軌道上前進(jìn) 只是 偶爾創(chuàng)造了一次相遇 卻也要在片刻之后立刻回歸原本的軌道 “當(dāng)時(shí)的他...
    羽兮木閱讀 171評(píng)論 0 0
  • 古今難堪是離愁,離愁難敘,何人不低頭?回首落花春夢(mèng)去,幾許回憶,殘?jiān)轮︻^, 空對(duì)寒秋。少年心,貪塵緣, 夢(mèng)醒處,來(lái)...
    Averson閱讀 310評(píng)論 0 1

友情鏈接更多精彩內(nèi)容