美文网首页
鸿蒙Harmony 从打印log(HiLog)开始

鸿蒙Harmony 从打印log(HiLog)开始

作者: 微风_10a5 | 来源:发表于2021-09-23 09:44 被阅读0次

我们做为程序员,日志打印是日常必备工具,见下面几种语言的打印日志

//c
printf("Hello World!\n");

//OC
NSLog(@"Hello, World!");

//Dart
print("Hello, World!");
官方对日志系统的介绍

所以在HarmonyOS 开发中也是要熟悉打印日志的,官方文档对日志系统的介绍https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide-debug-hilog-0000001172459337

官方日志示例如下

package com.example.myapplication.slice; // 请开发者根据实际包名进行填写

import com.example.myapplication.ResourceTable; // 请开发者根据实际包名进行填写
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;

import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.element.ShapeElement;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class MainAbilitySlice extends AbilitySlice {

    // 定义日志标签
    private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);

        //添加一个按钮
        DirectionalLayout directionalLayout = new DirectionalLayout(getContext());
        Button button = new Button(getContext());
        button.setText("Click!");
        button.setTextSize(200);
        // 设置按钮的间距和背景等样式
        button.setMarginTop(100);
        button.setMarginLeft(200);
        button.setPadding(120,60,120,60);
        ShapeElement backgroundElement = new  ShapeElement(this,ResourceTable.Graphic_background_element);button.setBackground(backgroundElement);

        if (button != null) {
            // 为按钮设置点击回调
            button.setClickedListener(component -> {
                    // 打印一条日志
                    HiLog.info(LABEL, "Hey! You have successfully printed a log.");
            });
        }

        directionalLayout.addComponent(button);
        super.setUIContent(directionalLayout);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

其中打印语句如下,

    // 打印一条日志
    HiLog.info(LABEL, "Hey! You have successfully printed a log.");

细心的你,你肯定发现了,有一个参数LABEL,这个参数是在最前面定义的,如下

    // 定义日志标签
    private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");

其中第一个参数基本是固定的HiLog.LOG_APP,第二个,第三个参数,我们可以自定义的, 后面会使用它们作为过滤来筛选日志

image.png
我们对日志进行封装

在我们开发中,到处都需要使用到打印,如果像官方示例一样,在每一个需要使用的地方,都先定义一个LEBAL,然后再去调用,这样就不太方便了, 也就是说我们有100个不界面,每个界面都需要先定义一下LEBAL,然后再去使用,这样就比较麻烦了, 因此我们需要对HiLog进行封装,封装成一个工具类,方便整个项目后面的使用

package com.example.myapplication0920;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class HiLogUtils {

    public  static  final String  TAG = "HM_TAG";
    private static final HiLogLabel LABEL = new HiLogLabel(ohos.hiviewdfx.HiLog.LOG_APP, 0x10000, TAG);
    public static  boolean flag = false;

    public  static  void  d(String msg){
        if(!flag){
            HiLog.debug(LABEL, msg);
        }
    }
    public  static  void  e(String msg){
        if(!flag){
            HiLog.error(LABEL, msg);
        }
    }
    public  static  void  w(String msg){
        if(!flag){
            HiLog.warn(LABEL, msg);

        }
    }
    public  static  void i (String msg){
        if(!flag){
            HiLog.info(LABEL, msg);
        }
    }

    public  static  void  f(String msg){
        if(!flag){
            HiLog.fatal(LABEL, msg);
        }
    }
}

现在我们来解释一下


image.png

上图中的LABEL,我们在上前面已经讲过了,这里不在赘述了.我们看一下flag,这个参数用来标记,如果是开发阶段,就置为fasle,让其能正常输出日志, 如果是生产阶段(产品上线),就置为true,让其不能输出日志

外面使用简单,到处都可以使用
HiLogUtils.d("onStart");
image.png

效果如下:


image.png

结尾

看到这里的小伙们,或者觉得文章对你有点帮助的话,请点赞加关注喽,您的反馈就是我们前进的动力。后续会分享更多关于鸿蒙开发(HarmonyOS)的干货。谢谢~~

相关文章

网友评论

      本文标题:鸿蒙Harmony 从打印log(HiLog)开始

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