美文网首页Android备忘录
链接回代码的Log

链接回代码的Log

作者: wIsper | 来源:发表于2017-08-02 11:20 被阅读6次

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

    相关文章

      网友评论

        本文标题:链接回代码的Log

        本文链接:https://www.haomeiwen.com/subject/jquelxtx.html