链接回代码的Log

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更便捷

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

推荐阅读更多精彩内容

  • 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以...
    天之界线2010阅读 7,214评论 11 29
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,546评论 0 12
  • 小时候看电影越剧《红楼梦》,感觉唱腔晦涩难懂,只是感觉演员阵容浩大,出出进进的挺好玩的, 那时候,跟着电影放映队辗...
    兰若9788阅读 450评论 0 1
  • select 列明1,列明2 from 表名 select * from 表名 select distinct 列...
    匆匆数年_a8b7阅读 168评论 0 0
  • 上一章 目录 (四)我必须是你近旁的一株木棉 “嗡~” 木棉感觉到手机振动,拿起来看到是何甜甜...
    一朵小云儿阅读 555评论 17 6