Android备忘录

链接回代码的Log

2017-08-02  本文已影响6人  wIsper

Android开发中,调试程序时会打印log,当log足够多的时候,想要找到打印log的位置就比较麻烦,不得已还得全文搜索。接下来介绍一个便捷的方式定位到log的位置

打印的log可以直接链接回代码

使用方式

Logger.e("测试一下");

效果图

logger.png

工具类完整代码

import android.util.Log;

/**
 * 日志类:可以链接回代码
 */

public class Logger {

    protected static final String TAG = "WADAXI";

    private Logger() {
    }

    public static void v(String msg) {
        if (BuildConfig.DEBUG) {
            Log.v(TAG, buildMessage(msg));
        }
    }

    public static void v(String msg, Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.v(TAG, buildMessage(msg), t);
        }
    }

    public static void d(String msg) {
        if (BuildConfig.DEBUG) {
            Log.d(TAG, buildMessage(msg));
        }
    }

    public static void d(String msg, Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.d(TAG, buildMessage(msg), t);
        }
    }

    public static void i(String msg) {
        if (BuildConfig.DEBUG) {
            Log.i(TAG, buildMessage(msg));
        }
    }

    public static void i(String msg, Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.i(TAG, buildMessage(msg), t);
        }
    }

    public static void w(String msg) {
        if (BuildConfig.DEBUG) {
            Log.w(TAG, buildMessage(msg));
        }
    }

    public static void w(String msg, Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.w(TAG, buildMessage(msg), t);
        }
    }

    public static void e(String msg) {
        if (BuildConfig.DEBUG) {
            Log.e(TAG, buildMessage(msg));
        }
    }

    public static void e(String msg, Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.e(TAG, buildMessage(msg), t);
        }
    }

    /**
     * 构建 log 的 message
     *
     * @param message 要打印的信息
     * @return 完成拼接的信息
     */
    private static String buildMessage(String message) {
        StackTraceElement stackTrace = new Throwable().fillInStackTrace().getStackTrace()[2];
        String fullName = stackTrace.getClassName();
        StringBuilder builder = new StringBuilder();
        builder.append(message).append("{(");
        if (fullName.contains("$")) {
            builder.append(fullName.substring(fullName.lastIndexOf(".") + 1, fullName.indexOf("$")));
        } else {
            builder.append(fullName.substring(fullName.lastIndexOf(".") + 1));
        }
        builder.append(".java:")
                .append(stackTrace.getLineNumber())
                .append(")#")
                .append(stackTrace.getMethodName())
                .append("()}");
        return builder.toString();
    }
}

当然,这个TAG可以自定义,你也可以任意改造这个工具类。

只是为了让log更便捷

上一篇 下一篇

猜你喜欢

热点阅读