Harmony 鸿蒙 HiLog 使用

2021-11-06  本文已影响0人  _发强

先上效果图

格式: domain/[类名:代码行数]-> [方法名]: [输出内容]
image.png

直接上代码:

public class HLog {
    private static final boolean logEnable = BuildConfig.DEBUG;
    private static final String TAG = "";

    public static void d(String msg) {
        d(TAG, msg);
    }

    public static void d(String TAG, String msg) {
        if (logEnable) {
            HiLog.debug(hLogLabel(TAG), msg);
        }
    }

    public static void e(String msg) {
        e(TAG, msg);
    }

    public static void e(String TAG, String msg) {
        if (logEnable) {
            HiLog.error(hLogLabel(TAG), msg);
        }
    }

    public static void i(String msg) {
        i(TAG, msg);
    }

    public static void i(String TAG, String msg) {
        if (logEnable) {
            HiLog.info(hLogLabel(TAG), msg);
        }
    }

    public static void w(String msg) {
        w(TAG, msg);
    }

    public static void w(String TAG, String msg) {
        if (logEnable) {
            HiLog.warn(hLogLabel(TAG), msg);
        }
    }

    private static HiLogLabel hLogLabel(String TAG) {
        return new HiLogLabel(HiLog.LOG_APP, 0x00201, generateTempTag(TAG));
    }

    private static String generateTempTag(String tag) {
        if (TextUtils.isEmpty(tag)) {
            return getDefaultTag();
        } else {
            return getDefaultTag() + ", " + tag;
        }
    }

    private static String getDefaultTag() {
        StackTraceElement[] elements = new Throwable().getStackTrace();
        StackTraceElement element = null;
        for (int i = 2; i < elements.length; i++) {  // 这里的 i 起始值可以写 0,主要是下面的if 判断,目的是为了获取调用 Log 的地方
            if (elements[i].getClassName().equals(HLog.class.getName())) {
                element = elements[i + 1];
            }
        }
        if (element != null) {
            return "(" + element.getFileName() + ":" + element.getLineNumber() + ")->" + element.getMethodName();
        }
        return "HLog";
    }

}

上一篇下一篇

猜你喜欢

热点阅读