Adnroid 简单易用的Log

个人觉得,android开发中的log很必要,但为了log去依赖第三方库,却又显得太重,真是此事古难全啊。

于是乎,简单的包装下log日常使用,惶惶恐难辨优劣,发上来欢迎吐槽~

废话不多,上码


public class AppLog {

    public static void v(String content) {
        if (BuildConfig.DEBUG) {
            Log.d(generateTag(), content);
        }
    }

    public static void d(String content) {
        if (BuildConfig.DEBUG) {
            Log.d(generateTag(), content);
        }
    }

    public static void i(String content) {
        if (BuildConfig.DEBUG) {
            Log.i(generateTag(), content);
        }
    }

    public static void w(String content) {
        if (BuildConfig.DEBUG) {
            Log.w(generateTag(), content);
        }
    }

    public static void e(String content) {
        if (BuildConfig.DEBUG) {
            Log.e(generateTag(), content);
        }
    }

    public static void wtf(Throwable t) {
        if (BuildConfig.DEBUG) {
            Log.wtf(generateTag(), t);
        }
    }

    public static void wtf(String content) {
        if (BuildConfig.DEBUG) {
            Log.wtf(generateTag(), content);
        }
    }

    public static void json(String content) {
        if (BuildConfig.DEBUG) {
            printJson(generateTag(), content);
        }
    }

    private static StackTraceElement getCallerStackTraceElement() {
        return Thread.currentThread().getStackTrace()[5];
    }

    private static String generateTag() {
        String tag = "%s.%s(L:%d)";
        StackTraceElement caller = getCallerStackTraceElement();
        String callerClazzName = caller.getClassName();
        callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1);
        tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber());
        return tag;
    }

    private static void printJson(String tag, String msg) {
        String message;
        try {
            if (msg.startsWith("{")) {
                message = new JSONObject(msg).toString(4);
            } else if (msg.startsWith("[")) {
                message = new JSONArray(msg).toString(4);
            } else {
                message = msg;
            }
        } catch (JSONException e) {
            message = msg;
        }

        String[] lines = message.split(System.getProperty("line.separator"));
        blockStart(tag);
        for (String line : lines) {
            Log.d(tag, "║ " + line);
        }
        blockEnd(tag);
    }

    private static void blockStart(String tag) {
        Log.d(tag, "╔═══════════════════════════════════════════════════════════════════════════════════════");
    }

    private static void blockEnd(String tag) {
        Log.d(tag, "╚═══════════════════════════════════════════════════════════════════════════════════════");
    }

}

用法略偷笑

效果如下:






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值