Android Log日志封装

一、简介

为什么要对日志进行封装?

先对比一下效果:
clipboard.png

打印结果:
clipboard.png
封装前:快捷键输入loge便可打印出Log.e(TAG, "onCreate: ", );需要输入参数TAG和参数msg。 且我们可以在Logcat页面查看日志信息。

缺点:

(1)输入的参数较多且重复

(2)当打印的日志信息过多时,不方便查找我们所需的信息

(3)无法快速指定是哪一行打印出来的信息

(4)应用发布到市场上时,需要手动一个个删除打印的日志

封装后:只需输入你想打印的msg,使用方便。且可以在Logcat页点击类名即可跳转到相应的位置。

二、Log具体封装

import android.util.Log;

/**
 *
 * 日志封装
 */

public class LogUtils {
    static String className;//类名
    static String methodName;//方法名
    static int lineNumber;//行数

    /**
     * 判断是否可以调试
     * @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();
    }

    /**
     * 获取文件名、方法名、所在行数
     * @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));
    }
}

三、关闭调试

当我们要将应用发布到市场时,需要把日志清除掉(关闭调试)。

(1)第一种方式:打开project Stucture
clipboard.png

(2)第二种方式:打开build.gradle
clipboard.png
就不需要像以前一样一行行删除。当要用的时候再打开即可

四、源码地址

https://github.com/DayorNight/BLCS

五、内容推荐

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,638评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,130评论 2 59
  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 11,383评论 12 197
  • 两条永不相交的平行线 在各自的轨道上前进 只是 偶尔创造了一次相遇 却也要在片刻之后立刻回归原本的轨道 “当时的他...
    羽兮木阅读 149评论 0 0
  • 古今难堪是离愁,离愁难叙,何人不低头?回首落花春梦去,几许回忆,残月枝头, 空对寒秋。少年心,贪尘缘, 梦醒处,来...
    Averson阅读 303评论 0 1